我已经在本地环境中实现了Laravel Websockets和Echo,一切都正常工作,但是当部署到生产环境时,似乎可以建立连接并订阅频道,但事件不会触发。 我对自己做错了什么毫无头绪。
这是我的设置:
.env文件:
"Echo" 配置:
nginx 配置:
这是为了建立一个反向代理,以便能够使用我的网站SSL。
在websockets仪表板上,路径为/laravel-websockets,我能够通过443端口连接,并且我可以看到它已经订阅了我的频道。其中,websockets.php和broadcasting.php的所有默认值都被保留。 当事件被触发时,我期望看到的是类似于我在本地环境中看到的这样的东西: 但是这并没有在生产中出现。好像它可以订阅频道,但不能捕获
这是我第一次实现Websockets,所以有点迷失。有人看到我做错了什么吗?
这是我的设置:
.env文件:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=someID
PUSHER_APP_KEY=someKey
PUSHER_APP_SECRET=someSecret
PUSHER_APP_CLUSTER=eu
PUSHER_SCHEME=http
PUSHER_USE_SSL=false
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
MIX_PUSHER_USE_SSL=true
MIX_PUSHER_HOST=mydomain.com
MIX_PUSHER_PORT=443
"Echo" 配置:
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
wsHost: process.env.MIX_PUSHER_HOST,
wsPort: process.env.MIX_PUSHER_PORT,
forceTLS: process.env.MIX_PUSHER_USE_SSL === true || process.env.MIX_PUSHER_USE_SSL === 'true',
disableStats: true,
});
nginx 配置:
location /app/ {
proxy_pass http://127.0.0.1:6001/app/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
location /apps/ {
proxy_pass http://127.0.0.1:6001/apps/;
proxy_set_header Host $host;
}
这是为了建立一个反向代理,以便能够使用我的网站SSL。
在websockets仪表板上,路径为/laravel-websockets,我能够通过443端口连接,并且我可以看到它已经订阅了我的频道。其中,websockets.php和broadcasting.php的所有默认值都被保留。 当事件被触发时,我期望看到的是类似于我在本地环境中看到的这样的东西: 但是这并没有在生产中出现。好像它可以订阅频道,但不能捕获
api-message
事件。这是我第一次实现Websockets,所以有点迷失。有人看到我做错了什么吗?
class MyEvent implements ShouldBroadcast {}
改为:class MyEvent implements ShouldBroadcastNow {}
问题解决了。 - Blue Squirrelrabbitmq
来处理我的队列,因此它被设置为默认选项。您需要安装vladimir-yuldashev/laravel-queue-rabbitmq
包才能使用 rabbitmq。 - Chris