首页 > 解决方案 > laravel websocket客户端不起作用没有错误

问题描述

我正在尝试使用这个包中的 websocket https://docs.beyondco.de/laravel-websockets/

但是当从 http://localhost:8000/laravel-websockets测试 发送事件按钮时,它在控制台中的触发事件

但客户端控制台没有记录,也没有错误

我发送事件请检查下面的截图 在此处输入图像描述

从套接字服务器控制台接收的数据 在此处输入图像描述

那是我用于测试的客户端代码,但未登录 chrome 控制台。 在此处输入图像描述

这是 config/broadcast.php

    <?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Broadcaster
    |--------------------------------------------------------------------------
    |
    | This option controls the default broadcaster that will be used by the
    | framework when an event needs to be broadcast. You may set this to
    | any of the connections defined in the "connections" array below.
    |
    | Supported: "pusher", "redis", "log", "null"
    |
    */

    'default' => env('BROADCAST_DRIVER', 'null'),

    /*
    |--------------------------------------------------------------------------
    | Broadcast Connections
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the broadcast connections that will be used
    | to broadcast events to other systems or over websockets. Samples of
    | each available type of connection are provided inside this array.
    |
    */

    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' => false,
                'host' => '127.0.0.1',
                'port' => 6001,
                'scheme' => 'http'
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

];

感谢您。

标签: laravelwebsocket

解决方案


您必须在事件创建器中指定 laravel 事件的完整路径。尝试App\Event\WebSocketDemoEvent代替WebSocketDemoEvent.

如果你还没有初始化 laravel echo,然后用 - 收听你的频道

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: '{{env('PUSHER_APP_KEY')}}',
    cluster: '',
    encrypted: false,
    wsPort: '{{env('PUSHER_APP_PORT')}}'
});

window.Echo.channel('DemoChannel').listen('WebSocketDemoEvent', (e) => {
    console.log(e);
}

推荐阅读