【问题标题】:How to debug laravel-echo-server? Laravel 8 Redis Broadcasting如何调试 laravel-echo-server? Laravel 8 Redis 广播
【发布时间】:2021-06-21 12:59:32
【问题描述】:

创建事件并将其发送到 Redis 后,我尝试订阅该事件并通过 Vue 组件中的 socket.io 向 laravel-echo-server 发出请求。

window.Echo.channel('chat')
    .listen('Message', ({message}) => {
        this.messages.push(message);
    });

我用命令启动了 laravel-echo-server

laravel-echo-server start

{
    "authHost": "http://localhost",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}

另外,我开始排队了。

php artisan queue:work

还有 Laravel 开发服务器。

php artisan serve

提交表单后,redis-monitor 显示事件已生成并到达 Redis 服务器,bub I get an response en Firefox browser.

http://127.0.0.1:6001/socket.io/?EIO=4&transport=polling&t=NXbeHKa

96:0{"sid":"tmJyofZrnWNMGxIqAALI","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}2:40

并且消息不会发送给订阅的客户

我该如何解决这个问题?

【问题讨论】:

    标签: queue laravel-8 laravel-echo socket.io-redis


    【解决方案1】:

    问题是我的系统上安装了最新版本的“socket.io-client”库

    在“package.json”文件中,我更改了这个库的版本:

    "socket.io-client": "^4.0.0"
    

    现在是:

    "socket.io-client": "^2.4.0"
    

    而且还需要改“socket.io”

    "socket.io": "^2.4.0"
    

    要记住的另一点是 Laravel 为 Redis 通道创建了一个“laravel_database_”前缀。要订阅它,您需要将此前缀添加到频道名称

    window.Echo.channel('laravel_database_chat')
        .listen('Message', ({message}) => {
            this.messages.push(message);
        });
    

    或更改“.env”文件,使其没有前缀。

    BROADCAST_DRIVER=redis
    ...
    ...
    ...
    REDIS_HOST=127.0.0.1
    REDIS_CLIENT=predis
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    REDIS_PREFIX=""
    

    还有一件事,如果你想将 Laravel 队列与 Redis 一起使用,你需要在“.env”文件中写入队列的配置:

    QUEUE_CONNECTION=redis
    

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 2017-02-24
      • 2018-03-08
      • 2020-02-18
      • 2016-06-12
      • 2021-07-02
      • 2017-04-15
      相关资源
      最近更新 更多