【发布时间】:2014-12-26 00:30:57
【问题描述】:
环境:
Nodejs+Socketio
问题:
- 客户端 A 和客户端 B 都连接到服务器;
- 客户端 B 离线;
- 客户端A向客户端B发送消息(客户端B仍然离线);
- 客户端 B 再次连接服务器;
- [问题]客户端B收不到A的消息;
服务器代码
var clients = {};
io.sockets.on('connection', function (socket) {
socket.on('online', function (data) {
if (!clients[data.username]) {
clients[data.username] = socket;
}
io.sockets.emit('message', data.user + 'online now');
});
socket.on('say', function (data) {
if (data.to == 'all') {
io.sockets.emit('message', data.message);
} else { //to specific client
clients[data.to].emit('message', data.message);
}
});
});
说明
客户端B首先连接到一个地方的服务器。在客户端B离线期间,客户端A向客户端B发送消息。然后客户端B再次连接到另一个地方的服务器,客户端B需要接收来自客户端的消息A. 如何让它发挥作用?
【问题讨论】:
-
IMO 没有办法仅使用套接字来实现这一点,为此您必须检查客户端 B 的状态并将离线消息保存到 DB 或某个套接字变量,然后将其推回客户端B 在线时
-
感谢您的cmets,您知道如何检查客户端B的状态吗?我如何知道客户端B是在线还是离线?
-
来自
socket.on('disconnect', function(){}) -
请发布您的客户端代码。
-
谢谢Shawn,Ravi说得对,应该有DB来存储特定客户端对应的离线消息。
标签: javascript node.js sockets offline