我打开了调试功能,我看到了
engine.io-client:socket socket receive: type "message", data "2["subscription","53333668df2bade936513a38"]"
我的客户端代码是:
$(function() {
socket.on('subscription', function(id){
console.log("AHHH");
});
})
不显示控制台日志。看起来我在客户端收到了这条消息。为什么没有发生任何事情?我的后端是节点,万一有帮助。
答案 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);
})
会在调试日志中显示该消息,但不会调用该处理程序。