【发布时间】:2012-11-02 02:07:27
【问题描述】:
我正在尝试将套接字与 node.js 一起使用,我成功了,但我不知道如何在我的代码中区分客户端。 关于套接字的部分是这样的:
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({port: 8080});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('received: %s', message);
ws.send(message);
});
ws.send('something');
});
此代码适用于我的客户端 js。
但我想向特定用户或所有在我的服务器上打开套接字的用户发送消息。
在我的情况下,我作为客户端发送消息并收到响应,但其他用户什么也没显示。
我想例如 user1 通过 webSocket 向服务器发送一条消息,然后我向他的套接字打开的 user2 发送一条通知。
【问题讨论】:
-
你如何定义哪个连接是“user1”,哪个是“user2”?
-
我真的不知道,我想在连接的时候给用户一种socketSession
-
好吧,一旦您知道连接的用户身份(例如,当您的用户将他的用户名作为消息发送时),您就可以将其命名引用存储在字典(例如
connections[username] = ws),然后在其他地方,你可以做类似connections[username].send(message) -
如果您的需要不是完全针对单个用户,而是将一组用户(可能是一组 1)隔离到“房间”中,您可以使用套接字
join()和broadcast()方法。在这里查看一些讨论:stackoverflow.com/questions/6846174/… -
谢谢它可以很好地将我所有的ws注册到一个数组中:)