SocketIO在第一次发送之前无法发送新消息

时间:2013-12-30 23:20:40

标签: node.js socket.io

场合
用户已发送图像,在图像之后,他将发送消息。当第二个用户没有收到图片时,将不会发送该消息。

如何正常发送消息,就像在正常聊天中一样? 我发现,node.js有“async”模块,但是如何在Socket IO中使用它?

2 个答案:

答案 0 :(得分:2)

您可以简单地传递队列中的每条消息。因此,每个消息必须等待第一个消息发送,然后才能传递给下一个消息。

虽然,在这种情况下。我不认为等待发送图像是明智的 - 这会使你的聊天没有反应。

而是使用简单的文本image消息。收到此信息后,在聊天室中放置一个占位符,您可以在收到图像时加载图像(同时显示加载程序)。这将允许您继续聊天,而不会被长IO过程阻止以完成。

答案 1 :(得分:1)

Socket.IO使用单个WebSocket连接,只允许一次发送一个项目。您应该考虑在单独的WebSocket上或通过其他方法在带外发送该图像。

我有类似的情况,我必须流连续的二进制数据和信令消息。为此,我使用BinaryJS来设置两端镜像的逻辑流。一个流用于二进制流,另一个流用于RPC。不幸的是,Socket.IO不能使用任意流。唯一可行的RPC库是rpc-stream。 RPC功能并不像Socket.IO那样强大(特别是在处理回调时),但它确实运行良好。

相关问题