我正在尝试构建应用程序(为我的个人项目提供更准确的库),这将基于房间管理(大厅,配对,房间等)。
我设法用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' });
});
答案 0 :(得分:1)
正如你所指出的,如果你只想到乒乓球,那就没有什么真正的区别了。我的显着变化是,它允许您验证已确认的特定事件(尽管您可以认为您也可以通过传递事件ID来执行_response
事件),并提供更方便的方式通过使用简单的回调样式表示法处理响应:第一个示例看起来更简洁。
此外,它允许您避免为一种类型的事件创建两个事件键,这种事件有点重复。已经为此目的做出了确认,因此没有理由不使用它来支持或创建另一个事件。