我正在try 使用带 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发送通知.

推荐答案

您只需将用户ID分配给数组客户端[],这将包含所有用户.您可以直接向所有用户发送消息,如下所示:

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port: 8080}),
    CLIENTS=[];

wss.on('connection', function(ws) {
    CLIENTS.push(ws);
    ws.on('message', function(message) {
        console.log('received: %s', message);
        sendAll(message);
    });
    ws.send("NEW USER JOINED");
});

function sendAll (message) {
    for (var i=0; i<CLIENTS.length; i++) {
        CLIENTS[i].send("Message: " + message);
    }
}

Node.js相关问答推荐

postgresql层与应用层的序列化

在Node JS中获取控制台选项卡标题

在Nest.Js中,如何发送带有表单数据的正文请求并应用正文请求验证.附加的文件是可选的

(0,core_1.default)不是使用@middy/core的lambda处理程序上的函数

如何在MongoDB中更新嵌套数组

对于具有重叠列的组合键,在冲突&q;上没有唯一或排除约束匹配错误

即使卷已设置,Docker Nodemon 也不会热重载

Axios TypeError:将循环 struct 转换为 JSON

尽管 tsconfig 中提供了正确的路径,但仍出现找不到模块错误

MongoDB:通过匹配输入字符串或输入字符串中的单个单词进行搜索

Nodejs 从链接数组中获取数据并保存到 mongodb

如何使用 $PATH 变量在系统中全局自动安装 bash 脚本?或者重写脚本到node

在系统启动时启动本地 node 服务器

将环境变量从 GitHub 操作传递到 json

如何使用 superagent/supertest 链接 http 调用?

如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前缀

Selenium WebDriver 等到元素显示

什么是 JavaScript 中的REPL?

如何仅在丢失的路由上将 Express.js 设置为 404?

桌面应用程序仅支持 oauth_callback 值 'oob'/oauth/request_token