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”字段,并在响应中回显该字段,从而允许客户端将每个响应与触发它的原始请求相关联。没有特定的方法来区分来自同一用户的相同请求?