socket.io 发出回调合适吗?
Posted
技术标签:
【中文标题】socket.io 发出回调合适吗?【英文标题】:Is socket.io emit callback appropriate? 【发布时间】:2013-12-18 17:22:31 【问题描述】:最近我一直在玩socket.io,发现了一个有趣的东西,我可以像这样发出函数回调。
我开始像这样在客户端发射:
client.emit('eventToEmit', dataToEmit, function(error, message)
console.log(error);
console.log(message);
);
然后我可以像这样从服务器端触发回调:
client.on('eventToEmit', function(data, callback)
console.log(data);
callback('error', 'message');
);
一切正常,没有错误,但我很感兴趣,如果这样做是合适的,因为到目前为止我在文档或任何示例中都没有看到类似的东西。
【问题讨论】:
还要注意确认函数只能调用一次。 还要注意,没有“超时”功能,所以当你的代码依赖于调用确认函数时要小心。另外,如果您有兴趣,请查看我创建的模块作为此问题的解决方法npmjs.com/package/timeout-callback @JakubKnejzlik 你能把那个模块添加到 github 并给它一个许可证,这样它就可以使用了吗? @Dodekeract 很高兴听到有人想使用它。完成:) 【参考方案1】:这是完全合法的。
这些回调被称为“确认函数”,并在in the Wiki 上进行了简要提及,并在NPM page 上进行了更详细的描述(“获取确认”)。
编辑:可以在here找到更多最新文档。
【讨论】:
在这些链接中没有提到“确认”一词:(这些链接消失了吗?还是被隐藏了? 也许帖子太旧了,因为没有一个链接提供答案,最后一个甚至坏了。 @arnoldsocket.io
网站似乎离线 atm。
我一直在尝试解决这个问题,但没有成功。我的代码看起来与 socket.io 网站上的服务器代码完全一样,但它根本不起作用。我仍在试图弄清楚作为第二个参数传递的内容,但它绝对不是回调,因为尝试使用它作为一个回调会使服务器崩溃。
嗯。好的。我正在使用 socket.io ios 客户端库,所以我不确定我是否正确地做事。我正在尝试向服务器发送消息并立即获得响应。有谁知道在互联网上使用服务器节点代码和 iOS 客户端的任何示例?【参考方案2】:
根据socket.emit()
documentation,确认函数(回调)必须是socket.emit()
调用的最后一个参数。我遇到了服务器代码中回调为null
的问题。
确保回调是socket.emit()
的最后一个参数
例如
// correct
socket.emit('eventname', arg1, arg2, callback);
// incorrect
socket.emit('eventname', arg1, callback, arg2);
【讨论】:
以上是关于socket.io 发出回调合适吗?的主要内容,如果未能解决你的问题,请参考以下文章