Laravel自定义websocket处理程序不工作



web.php

use SymfonyComponentConsoleOutputNullOutput;
use BeyondCodeLaravelWebSocketsServerLoggerWebsocketsLogger;
app()->singleton(WebsocketsLogger::class, function () {
    return (new WebsocketsLogger(new NullOutput()))->enable(false);
});
use BeyondCodeLaravelWebSocketsFacadesWebSocketsRouter;
WebSocketsRouter::webSocket('/my-websocket', AppMyCustomWebSocketHandler::class);

MyCustomWebSocketHandler

<?php
namespace App;
use RatchetConnectionInterface;
use RatchetRFC6455MessagingMessageInterface;
use RatchetWebSocketMessageComponentInterface;
use BeyondCodeLaravelWebSocketsWebSocketsWebSocketHandler;
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:serveartisan:serve正在运行

参考条款1、2

对此有什么想法吗。?尝试在这里演示

如下设置websocket路由解决了问题。

use SymfonyComponentConsoleOutputNullOutput;
use BeyondCodeLaravelWebSocketsServerLoggerWebsocketsLogger;
app()->singleton(WebsocketsLogger::class, function () {
    return (new WebsocketsLogger(new NullOutput()))->enable(false);
});
use BeyondCodeLaravelWebSocketsFacadesWebSocketsRouter;
WebSocketsRouter::webSocket('/app/{appkey}/my-websocket', AppMyCustomWebSocketHandler::class);

最新更新