我在本地环境中设置了一个工作节点服务器和Redis服务器,并且能够成功地将socket.io与Laravel一起使用。但是当我尝试将我的更改推送到生产服务器时,我意识到socket.io无法正常工作。
当我在谷歌Chrome控制台中输入以下命令来调试socket.io时,它说它已建立连接,但它永远不会收到数据。
localStorage.debug = "socket.io-client:socket"
我知道这是redis服务器的一个问题因为一个,它说它连接到套接字。还有两个,如果我在事件类中写死并转储,它就会成功死亡。
namespace App\Events;
class MyEvent implements ShouldBroadcast{
public function broadcastOn(){
dd("Successfully reached event");
return new Channel($this->channel.'-channel');}}
最后,我知道它不可能是我的服务器之一,因为我能够从本地和远程主机卷曲redis服务器和节点服务器的两个端口。
这是一篇经过编辑的帖子,显示了我的调试过程。我原来的帖子太模糊了,因为我不知道如何调试这个问题,但是如果你想看到它,请查看编辑内容。
答案 0 :(得分:0)
令人尴尬的是,我找到了解决方案。它检测套接字但未通过的原因是因为我忘记了环境变量被重置了。所以这一次我把它当作我的环境变量来运行。
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
当我应该使用它时。
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
SESSION_DRIVER=file
QUEUE_DRIVER=sync