Laravel Web 套接字(超越代码)突然停止工作

问题描述 投票:0回答:2

有一天,我意识到我的 Web 套接字在我的生产 Apache 服务器中无法工作。因此,我尝试在那里进行调试,发现没有任何问题,队列正在工作,套接字客户端正在连接,但在客户端没有接收到任何内容。

如何? - 不知道 从何时起? - 不知道

因此,我决定在本地环境中对其进行全部测试,就像我在部署之前所做的那样。

我正在使用 laravel-websockets 来实现 Web 套接字。

我正在使用下面的 Vue.js 代码来调试我的套接字连接:

import Echo from "laravel-echo";
import Pusher from "pusher-js";
window.Pusher = Pusher;

const token = "44|yiPuLJM1DviFgX7Aq6cZPam86eyQMYoNssZQs2gl"
const tenant = "test"

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'laravel_rdb',
    wsHost: '127.0.0.1',
    authEndpoint: 'http://localhost/myapp/public/broadcasting/auth',
    encrypted: false,
    forceTLS: false,
    wsPort: 6001,
    wssPort:6001,
    disableStats: true,
    enabledTransports: ['ws', 'wss'],
    auth : {
        headers : {
            Authorization: "Bearer " + token,
            Accept: "application/json",
            'X-Tenant': tenant,
        }
    },
})

window.Echo.private(tenant + '.notifications.user.1')
    .listen('NotifyUser', (e) => {
    console.log(e)
})

window.Echo.connector.pusher.connection.bind('state_change', (state) => {
    console.log('Debug - Current connection state: ' + state.current);

    if (window.Echo.websocketsState !== '' && state.current === 'connected') {
        console.log("Status Update: " + state.current);
    } else if (window.Echo.websocketsState !== '' && state.current === 'failed') {
        window.Echo.reconnectInterval = window.setInterval(() => {
            var ifConnected = window.navigator.onLine;
            if (ifConnected) {
                clearInterval(window.Echo.reconnectInterval);
                console.log("Status Update 2: " + state.current);
            }
        }, 3000);
    }

    window.Echo.websocketsState = state.current;
});

使用此代码,我可以看到 Web 套接字已成功连接,但控制台没有显示有关我发送消息的任何内容。

我正在使用数据库队列来处理套接字消息并使用

php artisan queue:work
我可以看到我的广播队列正在处理。

我也使用网络套接字仪表板进行了测试。当我启动 Vue.js 代码时,我可以看到我的频道已订阅,但是当我尝试从仪表板向该频道发送事件消息时,它什么也不做。没有错误,没有警报,什么都没有。

我没有对我的网络套接字代码进行任何更改。相同的代码运行良好,没有任何问题,但它突然停止工作,最令人沮丧的是根本没有错误。

我猜测唯一可能导致错误的因素是一些依赖包或 Laravel 框架本身的兼容性问题,因为我定期更新它们。我已经很长时间没有检查网络套接字了,所以我不太确定是什么导致了这个问题。

php laravel pusher laravel-echo laravel-websockets
2个回答
0
投票

问题和解决方案已在此处解释:https://github.com/beyondcode/laravel-websockets/issues/1041


0
投票

非常感谢你!!! 为此https://github.com/beyondcode/laravel-websockets/issues/1041 我一直在苦苦挣扎,websocket 已经好几天没有工作了。 这完全帮助了我。 再次感谢您

© www.soinside.com 2019 - 2024. All rights reserved.