当socketIO收到客户端的一个请求,我的响应是大量的记录,而同时另一个请求来到服务器,第二个请求的响应有一点延迟,实际上socketIO不能同时向客户端发送两个响应,有谁知道我的问题的解决方案是什么?我通过sockei.on接收请求并使用socket.emit发送响应我有express和socket io的服务器
acruukt91#
套接字消息(服务器到客户端)不是“响应”。在实时套接字编程中没有“响应”。它们是两个方向的命令。就这些了。1.一个来自客户端的命令说“我需要最新的Map”。客户端->服务器命令可能是“need-new-map”(或者它可以只是一个数字,或者任何表示该命令的标记)。1.没有“响应”,它只是来自客户端的传入命令。1.您的服务器启动了一个构建Map的后台进程**;假设构建一个Map需要100秒作为一个例子。在这个进程中,您记下它是哪个客户端(假设是客户端#11007)。1.当它发生时,另一个命令从客户端到达(可能是同一个客户端或不同的客户端,这无关紧要)1.当它发生时,另一个命令从客户端到达(可能是同一个客户端或不同的客户端,这无关紧要)1.稍后,(2)中提到的过程完成。该过程执行以下操作:(i)检查客户端#11007是否仍然连接。(ii)如果是,则向该客户端发送命令。该命令可能是“new-map”,后跟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命令是完全不相关的。客户端从不等待响应。客户端是根据发送给它们的命令(作为服务器->客户端命令)执行操作的傀儡。
piztneat2#
这正是我所做的,客户端将其请求发送到服务器,并在响应准备就绪后,服务器将响应发送到客户端。问题是,如果多个客户端同时向服务器发送请求,服务器将在响应准备就绪时将它们发送到队列中的客户端,最后一个客户端可能会延迟很长时间才收到答案。我如何管理这个问题,让所有客户端都能真实的得到你想要的答案。
2条答案
按热度按时间acruukt91#
套接字消息(服务器到客户端)不是“响应”。
在实时套接字编程中没有“响应”。
它们是两个方向的命令。
就这些了。
1.一个来自客户端的命令说“我需要最新的Map”。客户端->服务器命令可能是“need-new-map”(或者它可以只是一个数字,或者任何表示该命令的标记)。
1.没有“响应”,它只是来自客户端的传入命令。
1.您的服务器启动了一个构建Map的后台进程**;假设构建一个Map需要100秒作为一个例子。在这个进程中,您记下它是哪个客户端(假设是客户端#11007)。
1.当它发生时,另一个命令从客户端到达(可能是同一个客户端或不同的客户端,这无关紧要)
1.当它发生时,另一个命令从客户端到达(可能是同一个客户端或不同的客户端,这无关紧要)
1.稍后,(2)中提到的过程完成。该过程执行以下操作:(i)检查客户端#11007是否仍然连接。(ii)如果是,则向该客户端发送命令。该命令可能是“new-map”,后跟map的二进制数据。
如果你在客户端“倾听回应”,你完全误解了实时通信的基本模式。
实际上,socketIO不能同时向客户端发送两个响应
从服务器到客户端的每一次通信都是一个命令。它们可能看起来像这些例子...
字符串
等
server->client和client->server命令是完全不相关的。
客户端从不等待响应。客户端是根据发送给它们的命令(作为服务器->客户端命令)执行操作的傀儡。
piztneat2#
这正是我所做的,客户端将其请求发送到服务器,并在响应准备就绪后,服务器将响应发送到客户端。问题是,如果多个客户端同时向服务器发送请求,服务器将在响应准备就绪时将它们发送到队列中的客户端,最后一个客户端可能会延迟很长时间才收到答案。我如何管理这个问题,让所有客户端都能真实的得到你想要的答案。