socket.io:如何控制&检查消息流?

时间:2016-05-18 18:56:55

标签: node.js sockets socket.io

让我们说我们有鲍勃和爱丽丝:

鲍勃向爱丽丝发出一个问题,如果爱丽丝得到了问题,爱丽丝会回答鲍勃,如果鲍勃得到答案,那么通讯就完成了!

情景:

io.to('alice').emit('question');期间,alice失去了联系 断开连接,我们使用disconnect事件并向bob发送通知: io.to('bob').emit('hey bob alice is disconnected and she did not received your question);和bob在发射期间突然断开连接并再次重新连接! 它们之间似乎没有实际转移,对吧?我们怎样才能在服务器上捕获这种情况?

socket.io(node.js)上是否存在回调或其他内容,以确保邮件转移到alice或不是?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用第二个参数回调来使用确认:

socket.emit('ferret', 'tobi', function (data) { // emit
  console.log(data); // got callback (ack)
});

socket.on('ferret', function (name, fn) { // receive
  fn('woot'); // execute ack callback
});

http://socket.io/docs/#sending-and-getting-data-(acknowledgements)

可以创建一个更复杂的方案,但这是所有socket.io支持开箱即用。