Javascript Socket.io';消息';事件激发,但单个侦听器不';不要开枪。在iframe中注册的侦听器
我有一个主页,里面有一个iframe。 主页使用socket.io连接到my Node.JS服务器。 套接字存储在Javascript Socket.io';消息';事件激发,但单个侦听器不';不要开枪。在iframe中注册的侦听器,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我有一个主页,里面有一个iframe。 主页使用socket.io连接到my Node.JS服务器。 套接字存储在窗口中。socket。 然后,在iframe中,我使用parent.window.socket访问套接字。 在iframe中运行console.log(parent.window.socket)表明它是有效的 在iframe中,我有一些东西。 首先,为事件A注册处理程序。 它有一个清晰的输出(console.log),因此输出代码不是坏的。 我还有socket.on('message
窗口中。socket
。
然后,在iframe中,我使用parent.window.socket
访问套接字。
在iframe中运行console.log(parent.window.socket)
表明它是有效的
在iframe中,我有一些东西。
首先,为事件A
注册处理程序。
它有一个清晰的输出(console.log),因此输出代码不是坏的。
我还有socket.on('message')
来捕获所有消息。
最后,我有一些emit向服务器发送消息
我已确认服务器正在连接和接收消息,因为来自my emits和connect/disconnect事件的事件会触发。
但是,当服务器发回一条消息作为响应时,事件不会触发。
在('message')上的socket.on('message')中,我很好地接收到消息,带有正确的数据和参数,但是我的事件('A')
)socket.on('A')没有触发
我查过:
- 我在iframe代码中使用了正确的WebSocket对象
- iframe和“查看器”页面是来自同一域和服务器的服务器(不是跨源问题)
- 消息在两端接收,但服务器未启动自定义处理程序
- 控制台中没有错误
- 我已经尝试使用firefox调试器逐步完成代码,并且发送的变量和数据都是正确的
编辑:也在父页面中测试了它-相同的行为。它在
socket.on('message')
中接收消息,但是socket.on('A')
没有被激发。解决了这个问题。在客户端和服务器上混合使用了socket.send()和socket.emit(),但根据,send仅激发“message”事件,“emit”激发自定义事件。使用iframes与此无关。socket.on('A')在父页面中起作用吗?@johnley在父页面中测试了它-同样的行为。它在socket.on('message')中接收消息,但在socket.on('A')
中未激发消息。有示例代码吗?