在我正在构建的聊天服务中,我需要直接从服务器发送消息。
我找不到解决方案,文档中有一个例子:
// SERVER
io.sockets.on('connection', function (socket) {
socket.on('ferret', function (name, fn) {
fn('woot');
});
});
// CLIENT
socket.on('connect', function () { // TIP: you can avoid listening on `connect` and listen on events directly too!
socket.emit('ferret', 'tobi', function (data) {
console.log(data); // data will be 'woot'
});
});
但与我需要的相反!
我需要从服务器执行emit
并从客户端收到确认收据!
有办法做到这一点吗?
答案 0 :(得分:1)
无法保证在服务器消息到达客户端之前可以终止连接。因此服务器上也没有像“clientGotMessage”那样的事件。如果消息必须到达用户,除了告诉服务器您在客户端上收到消息之外别无他法。
您可以通过发送号码来“轻松”完成此操作。客户端和服务器跟踪该号码。每次服务器发送时,它都会计数,每次客户端收到时,它都会计数。当客户端发送内容时,它会发送号码,因此服务器将查看客户端是否拥有所有内容。如果客户端错过了一条消息,则下一条消息将包含客户端不会接受的号码,并从服务器请求丢失的消息。