除非我在控制台中运行,否则Socket.emit(客户端)不会发出

时间:2016-05-19 16:07:41

标签: javascript node.js websocket

我正在尝试在客户端套接字连接时发出一个事件。这是我的代码。

socket.on('connect', function () {
    console.log('connect');
    socket.emit('status.update', { 
        conversationId: conversationId, 
        userId: userId, 
        online: true 
    });
});

此代码也嵌套在$(document).ready(function(){})

这是服务器上的监听器:

   socket.on('status.update', function(data){
       io.to(data.userId).emit('update.status', { conversationId: data.conversationId, online: data.online });
   });

这是应该发生的事情:

客户端(用户1):当socket连接时,发出事件。在这种情况下,它是'status.update',传递一些数据。

服务器:在status.update中发出' update.status'从数据中提取的用户

客户(用户2或收件人): on' update.status'用户1的在线状态在其聊天框中更新。

目前正在发生什么:

我正在使用2个独立的浏览器进行测试。 Chrome中的用户1和Firefox中的用户2(收件人)。我在firefox中打开控制台,我在socket.on('update.status')监听器上使用断点进行测试。

当用户1连接并且控制台关闭时,控制台仍会记录“连接”。消息,但不发出事件。我知道这是因为断点不是在接收方触发的。

当用户1连接并且控制台处于打开状态时,连接'消息仍然记录在控制台中,事件在发出时触发,现在断点在接收方触发。

有谁知道为什么会这样?感谢。

0 个答案:

没有答案