Laravel echo 连接到 pusher 而不是 laravel-websockets

Laravel echo connects to pusher instead of laravel-websockets

我启动 laravel-websockets 作为 systemctl 服务。

一切正常,但是在我执行 sudo reboot 直到 laravel-websockets 进程启动之后(我也使用 nginx 作为反向代理)应用程序上的客户端正在连接到推送器而不是我的套接字服务。

如果我清除 cookie 并刷新页面(在机器和所有服务启动几分钟后),客户端将按照它们应有的方式连接到 laravel-websockets。但前提是我清除 cookie。无论我刷新页面多少次,如果我不清除 cookie,客户端仍然连接到推送器。

在开发工具网络选项卡中: https://sockjs-eu.pusher.com/pusher/app/.... 代替 https://socket.mydomain.com

在我的推送器应用程序中,我关闭了客户端事件。但是在 laravel websockets 中我有它们。我确定客户端正在连接到推送器,因为我在错误控制台中得到了这个: To send client events, you must enable this feature in the Settings page of your dashboard.

我也在启动 laravel queue worker 作为 systemctl 服务。这可能与它有关吗?他们应该按顺序开始吗?

编辑

window.Echo = new Echo({
     broadcaster: 'pusher',
     key: process.env.MIX_PUSHER_APP_KEY,
     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
     wsHost: 'socket.mydomain.com', //this is not the real domain
     wssHost: 'socket.mydomain.com', //this is not the real domain
     wssPort:443,
     forceTLS: true,
     disableStats: true,
 });

试试这个配置

window.Echo = new Echo({
     broadcaster: 'pusher',
     key: 'broadcasting', // hard code
     wsHost: window.location.hostname,
     wssHost: window.location.hostname, 
     enabledTransports: ['ws', 'wss'],
     wssPort:443,
     forceTLS: true,
     disableStats: true,
 });

这里 key: 'broadcasting' 让它硬编码并尝试一些时间它会产生问题这是我的配置可能对你有帮助