php - Laravel 自定义 websocket 处理程序不起作用
问题描述
网页.php
use Symfony\Component\Console\Output\NullOutput;
use BeyondCode\LaravelWebSockets\Server\Logger\WebsocketsLogger;
app()->singleton(WebsocketsLogger::class, function () {
return (new WebsocketsLogger(new NullOutput()))->enable(false);
});
use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
WebSocketsRouter::webSocket('/my-websocket', \App\MyCustomWebSocketHandler::class);
MyCustomWebSocketHandler
<?php
namespace App;
use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\MessageInterface;
use Ratchet\WebSocket\MessageComponentInterface;
use BeyondCode\LaravelWebSockets\WebSockets\WebSocketHandler;
class MyCustomWebSocketHandler extends WebSocketHandler
{
public function onMessage(ConnectionInterface $connection, MessageInterface $msg)
{
// TODO: Implement onMessage() method.
}
}
客户
let socket = new WebSocket("ws://localhost:6001/app/websocketkey/my-websocket?protocol=7&client=js&version=4.3.1&flash=false");
尝试运行客户端连接时,它没有连接到自定义处理程序。默认处理程序工作正常。
和正在Websocket:serve
运行artisan:serve
对此有什么想法吗?在这里尝试了演示
解决方案
如下设置 websocket 路由解决了该问题。
use Symfony\Component\Console\Output\NullOutput;
use BeyondCode\LaravelWebSockets\Server\Logger\WebsocketsLogger;
app()->singleton(WebsocketsLogger::class, function () {
return (new WebsocketsLogger(new NullOutput()))->enable(false);
});
use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
WebSocketsRouter::webSocket('/app/{appkey}/my-websocket', \App\MyCustomWebSocketHandler::class);
推荐阅读
- c++ - 使用 Scanf 调试断言失败
- erlang - 元组列表 [{id, [
- ]}, {id2, [
- ]} ] 其中 ids 是原始列表元组的第二项 - Erlang
- javascript - 发出 Fetch Get 请求时出现 404 错误
- ruby - 进程如何以 Process.wait 不会注意到的方式死亡?
- r - 如何使用制表功能计算零?
- java - Java:如何使用构造函数创建数组对象?
- python - 我在 discord.py 中有错误(清除命令)
- css - grid-row-end 显示时隙
- assembly - 保存被调用者保存的寄存器会导致分段错误
- ios - NSParagraphStyleAttributeName : 从 swift 3 到 swift 4.2 的转换