Laravel пользовательский обработчик websocket не работает - PullRequest
1 голос
/ 05 марта 2020

веб. 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 работают

упомянутые статьи 1 , 2

Есть мысли по этому поводу.? Попробовал с демо здесь

1 Ответ

1 голос
/ 12 апреля 2020

Установка маршрута веб-сокета, как показано ниже, решает проблему.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...