Socket.IO确认与事件发出

时间:2017-05-31 10:01:35

标签: socket.io

我正在尝试构建应用程序(为我的个人项目提供更准确的库),这将基于房间管理(大厅,配对,房间等)。

我设法用socket.io做到了。

现在,我的问题是,我不知道应该使用什么样的设计模式。

我注意到socket.io有ack回调,这让我感到惊讶并认为这很好,但我不确定将ack与参数一起发送或用参数发出事件有什么区别。

所以,问题是,使用ack排放事件的优缺点是什么,反之亦然?

让我们说,使用以下代码的优点和缺点是什么:

假设处理程序回调为fn(err, res);

确认风格:

socket.on('join', function (data, ack) {
  // do the joining stuff here.
  return ack(null, { response: 'goes_here' });
});

事件发布方式:

socket.on('join', function (data, ack) {
  // do the joining stuff here.
  io.to(client_sid).emit('join_response', null, { response: 'goes_here' });
});

1 个答案:

答案 0 :(得分:1)

正如你所指出的,如果你只想到乒乓球,那就没有什么真正的区别了。我的显着变化是,它允许您验证已确认的特定事件(尽管您可以认为您也可以通过传递事件ID来执行_response事件),并提供更方便的方式通过使用简单的回调样式表示法处理响应:第一个示例看起来更简洁。

此外,它允许您避免为一种类型的事件创建两个事件键,这种事件有点重复。已经为此目的做出了确认,因此没有理由不使用它来支持或创建另一个事件。