Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 当socket.io调用的消息相同时,如何区分它们?_Sockets_Websocket_Socket.io - Fatal编程技术网

Sockets 当socket.io调用的消息相同时,如何区分它们?

Sockets 当socket.io调用的消息相同时,如何区分它们?,sockets,websocket,socket.io,Sockets,Websocket,Socket.io,假设我有一个套接字服务器,它正在侦听一条通用的消息,并且只会由于不同的有效负载而改变其行为。例如: socket.on('users.get', function(payload) { // retrieve user data // return data that corresponds to the data requested in "payload" socket.emit('users.get', returnData); }); 如果使用users.ge

假设我有一个套接字服务器,它正在侦听一条通用的
消息
,并且只会由于不同的有效负载而改变其行为。例如:

socket.on('users.get', function(payload) {
    // retrieve user data
    // return data that corresponds to the data requested in "payload"

    socket.emit('users.get', returnData);
});
如果使用
users.get
消息生成了两个套接字
emit
s,假设两者都在同一页面中生成,我如何能够在客户端区分它们的返回

直接的解决办法是将两个调用合并在一起,但是如果这种情况不可能,我将如何处理它呢?在此特定实例中,一个
users.get
调用在页面加载时在页面的标题中进行,另一个
users.get
调用在页面内容中进行


完全清楚地知道一个调用在头中,另一个调用在内容中,这意味着如果在客户端使用
.once()
而不是
.on()
,它可能会工作,但这仍然涉及竞争条件,所以我想知道是否有任何标准的方法来处理这个问题。

一个给定的
socket
(你称之为
.on
on)实例等于一个连接,而这个连接又等于一个特定的客户机。如果两个客户端发出一个类似的
emit
,它将到达两个不同的套接字,您的处理程序可以通过
socket
实例将响应返回给特定的客户端


如果同一套接字发出2次,则这是客户端-服务器应用程序级协议问题,应在客户端和服务器中处理。也许这意味着请求之间(对你的应用程序)没有什么差别,所以哪一个响应“先到”并不重要。如果存在差异,那么可能会在请求中添加一个“请求id”字段,并在响应中回显该字段,从而允许客户端将每个响应与触发它的原始请求相关联。

没有特定的方法来区分来自同一用户的相同请求?