我无法发出事件到房间在我的服务器应用程序,使用版本1.4.5Socket.io 1.4.5房间发出
我尝试这两种方式在一个房间里进行沟通,但没有奏效。
this.io.to(this.id).emit(eventName,data);
this.io.sockets.in(this.id).emit(eventName,data);
之前调用此,我注册用户在房间以这种方式
user.socket.join(this.id);
进一步细节
的
this.io
目的是require('socket.io')(http);
的
user.socket
对象是io.on('connection', function(socket)
我省略了代码的其余部分,因为它是在过度复杂的结构和继承链,并且还irellevant到这个问题。
我不一定需要一段代码来复制,而是一种如何调试和解决问题的方法。
编辑
当我停下此刻的应用程序时,我想发出讯息,当我检查io
对象,我得到以下。
io -> nsps -> '/' -> adapter -> rooms -> theRoomName -> sockets
我的插座ID 是列出。
有没有办法找出消息是否真的被发送?
编辑#2
当我检查插座对象,位于
io -> sockets -> sockets -> "socket id" -> rooms
房间ID 是目前有作为
要确认的前四件事是:1)this.io的价值是什么,它应该是什么。 2)'this.id'的价值是什么,它应该是什么。 3)什么是'eventName'? 4)客户端是否真的在侦听'eventName'消息? – jfriend00
您可以追踪服务器上调试器中的'.emit()'函数调用,看看它是否认为它应该实际发送消息并查看它的功能。您可以在服务器上使用网络跟踪(如WireShark或Ethereral)以查看它是否实际发送任何内容。您可以使用Chrome调试器中的“网络”选项卡查看消息是否到达客户端。 – jfriend00
非常感谢您关注此事。所有这些变量都被正确设置了,我在发布之前确定了。这是它的第四个步骤。在客户重构期间,我忘记为该事件附加一个监听器。再次感谢大家,如果你能够创建一个答案,我会很乐意接受它 – Slytherin