[node.js]如何在套接字 io 中毫不延迟地回答两个请求

· 收录于 2024-01-06 16:24:08 · source URL

问题详情

当我收到来自客户端的请求,并且我的响应是大量记录时,同时另一个请求到达服务器,第二个请求得到的响应有一点延迟。实际上,socketIO 不能同时向客户端发送两个响应。有谁知道我的问题的解决方案是什么?

我收到了sockei.on的请求 并使用 socket.emit 发送响应 我有带有 express 和套接字 io 的服务器

最佳回答

套接字消息(服务器到客户端)不是响应。

实时套接字编程中没有响应。

它们是两个方向的命令。

仅此而已。

  1. 客户端发出命令,说我需要最新的地图。client->server 命令可能是need-new-map(或者它可能只是一个数字,或者其他任何表示该命令的标记)。
  2. 没有响应,它只是来自客户端的传入命令。
  3. 您的服务器启动一个构建地图的后台进程;例如,构建地图需要 100 秒。在这个过程中,你下它是哪个客户端(比如说,客户端 #11007)。
  4. 碰巧的是,
  5. 另一个命令来自客户端(可能是同一个客户端或不同的客户端,无关紧要)
  6. 碰巧的是,
  7. 另一个命令来自客户端(可能是同一个客户端或不同的客户端,无关紧要)
  8. 稍后,(2)中提到的过程就完成了。该过程执行以下操作:(i) 检查客户端 #11007 是否仍处于连接状态。(ii) 如果是这样,请向该客户端发送命令。该命令可能是new-map,后跟映射的二进制数据。

如果在客户端中您正在监听响应,那么您完全误解了实时通信的基本范式。

事实上,socketIO 不能同时向客户端发送两个响应

从服务器到客户端的每一次通信都是一个命令。 它们可能看起来像这些例子......

set-email [email protected]
ask-user-for-creds
new-table-data . . . various data, perhaps as json . . .
new-url http ...
log-out-the-user

等等。

server->client 和 client->server 命令完全不相关。

客户从不等待响应。客户端是傀儡,它们对作为服务器>客户端命令发送给它们的命令执行操作。