我正在尝试构建基于房间管理(大厅、配对、房间等)的应用程序(更准确地说是我个人项目的库)。
我设法用 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' });
});
Run Code Online (Sandbox Code Playgroud)
相对
事件发出风格:
socket.on('join', function (data, ack) {
// do the joining stuff here.
io.to(client_sid).emit('join_response', null, { response: 'goes_here' });
});
Run Code Online (Sandbox Code Playgroud)
正如您所指出的,如果您只考虑乒乓球,那么并没有真正的区别。我认为显着的变化是它允许您验证特定事件是否已被确认(尽管您可能会争辩说您也可以通过_response传递事件 ID 来对事件执行此操作),并提供了一种更方便的方法来处理响应,通过使用简单的回调样式表示法:第一个示例看起来更干净、简单。
此外,它允许您避免仅为一种类型的事件创建两个事件键,这种事件有点重复。已为此目的做出确认,因此没有真正的理由不使用它来支持或创建另一个事件。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |