我使用的是WebSocketServer。当一个新客户端连接时,我需要将该客户端的数据存储为每个客户端的自定义对象,并且我希望能够将其存储在WebSocket中,以便当服务器从该客户端接收到新消息时,我可以快速地从WebSocket本身访问我的自定义对象。有没有什么方法可以做到这一点,或者我只需要为我所有的对象创建一个Map,然后每次根据对象的ID从WebSocket中查找对象?谢谢
um6iljoc1#
Map的想法将用于查找每个连接的数据,但是也没有理由不能将您自己的自定义属性添加到WebSocket对象中。
Map
wss.on('connection', socket => { socket.userInfo = {someProperty: 'someValue'}; socket.on('message', data => { console.log(socket.userInfo); }); });
然后,只要您在socket对象上收到消息,.userInfo属性就可用。请记住,这些信息是暂时的,并且只对socket对象的生存期有效。(例如在更改网页时),这将生成一个新的套接字对象,该对象将不具有以前的.userInfo属性。因此,如果该信息需要在一个连接的生存期之后保持更长时间,您将不得不将其存储在其他地方并通过某些持久用户属性(而不仅仅是套接字对象)对其进行索引。
socket
.userInfo
1条答案
按热度按时间um6iljoc1#
Map
的想法将用于查找每个连接的数据,但是也没有理由不能将您自己的自定义属性添加到WebSocket对象中。然后,只要您在
socket
对象上收到消息,.userInfo
属性就可用。请记住,这些信息是暂时的,并且只对
socket
对象的生存期有效。(例如在更改网页时),这将生成一个新的套接字对象,该对象将不具有以前的.userInfo
属性。因此,如果该信息需要在一个连接的生存期之后保持更长时间,您将不得不将其存储在其他地方并通过某些持久用户属性(而不仅仅是套接字对象)对其进行索引。