我正在使用 Node.js 构建服务器。我将代表用户的对象存储在关联数组中,现在这些对象的索引就是该连接的套接字 ID。使用 Socket.io 库,我通过简单地执行 socket.id 来获取它,因此对于处理我的请求的每个处理程序,我始终可以知道哪个用户发出了请求。
客户端每个用户都有已连接用户的 ID(与套接字 ID 不同)。
当我有一个用于将消息从一个用户发送到另一个用户的处理程序时,问题就会出现,我举一个例子:
用户 A 需要向用户 B 发送一条消息,我的协议将消息指定为如下所示:
MSG_KEY:{MSG:'hello world',USER_ID:'12345'}
服务器端我有一个处理程序监听“MSG_KEY”,当消息发送时它被执行并使用socket.id我可以检索谁发出了请求,但问题是我还需要获取用户B但是这次使用他的 USER_ID。我不想使用 socket.id 来避免会话欺骗。
我首先考虑通过从 socket.id 和用户 id 索引用户来在数组中索引用户。
我的问题是:这样做是个好主意吗? socket.io 是否提供了一种简化此操作的方法?
没有什么特别的原因你不能这样做。我会使用两个单独的对象(地图),并且可能让用户由对象而不是字符串表示,以便实际上只有一个用户(从两个地方引用)。
例如,用户:
var user = {userid: "JohnD", name: "John Doe"};
进而:
var usersByID = {};
usersByName[user.userid];
and
var usersBySocket = {};
usersBySocket[theSocketID] = user;
Or even
var users = {
byID: {},
bySocket: {}
};
users.byID[user.userid] = user;
users.bySocket[theSocketID] = user;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)