一旦客户端断开连接并重新连接,Socket Id是否重新发布服务器是在Socket.io和node.js上?

时间:2017-11-04 07:55:04

标签: node.js express socket.io

我想实现一对一的聊天,我对如何实现这一点很困惑。 我试图通过向每个套接字发送消息来实现此目的,但如果客户端断开连接并且Socket Id发生更改,则无法在存储在数据库中的套接字ID上发送消息。关于如何实现这个的任何提示?

先谢谢你。

1 个答案:

答案 0 :(得分:1)

对于每个新鲜的会话,都会创建新的客户端套接字实例,因此id可能会发生变化,因此为了能够识别用户,您应该依赖一些user_id而不是套接字ID,例如在新会话时 你可以实现一些登录逻辑,如

io.on("connection", function(socket) {

   // Accept a login event with user's data
   socket.on("login", function(userid) {
       // store socket instance against userid in session store like redis.
    }); 
});

这样你就可以在每个连接上保存一个新的套接字实例。

注意:使用套接字只能在接收者在线时发送消息,如果你想要离线消息功能你可能想要检查其他消息代理,如rabbitmq

Building NodeJs Chat Application with RabbitMQ