发送Socket.io消息,但事件处理程序不运行

时间:2014-08-14 03:31:46

标签: node.js socket.io

我打开了调试功能,我看到了

    engine.io-client:socket socket receive: type "message", data "2["subscription","53333668df2bade936513a38"]"

我的客户端代码是:

    $(function() {
      socket.on('subscription', function(id){
        console.log("AHHH");
      });
    })

不显示控制台日志。看起来我在客户端收到了这条消息。为什么没有发生任何事情?我的后端是节点,万一有帮助。

2 个答案:

答案 0 :(得分:0)

原来这是一个命名空间问题。 D'哦

答案 1 :(得分:0)

通常,由于处理程序在收到消息时尚未注册,因此可能会发生这种问题。在您的示例中可能会发生,因为处理程序已在$(document).ready中注册,但io.connect()在其他位置被调用。

例如,有

io.on('connection', function(socket) {
  socket.emit('subscription', 123);
});

在服务器端和

$(function() {
  localStorage.debug = '*';
  var socket = io.connect();
  setTimeout(function () {
    socket.on('subscription', function(id){
      console.log("AHHH");
    });
  }, 1000);
})

会在调试日志中显示该消息,但不会调用该处理程序。