当前位置: 首页 > 面试题库 >

webSocketServer node.js如何区分客户端

钱选
2023-03-14
问题内容

我成功地将套接字与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分配给数组CLIENTS [],其中将包含所有用户。您可以直接向所有用户发送消息,如下所示:

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);
    }
}


 类似资料:
  • 问题内容: TCP具有元组对(IP地址/端口/类型)来告诉另一个客户端。UDP传递客户端IP和端口。unix域如何跟踪不同的客户端? 换句话说,服务器创建一个绑定到某个路径的套接字,例如/ tmp / socket。2个或更多客户端连接到/ tmp / socket。底层发生了什么,可跟踪来自client1和client2的数据?我想网络堆栈在域套接字中不起作用,所以内核在这里完成所有工作吗? 是

  • 问题内容: 我正在使用Zend_Framework编写一个应用程序(因此解决方案可以依靠它)。 如何获得客户的时区? 例如,如果有人在俄罗斯莫斯科,我想得到3 * 60 * 60(因为有UTC + 3)。如果他在英国,我要零。如果他使用UTC-3:30(加拿大?),我要-3.5 * 60 * 60。 (这不是格式的问题-我可以在俄罗斯圣彼得堡获得’Europe / Moscow’或’UTC-3’,

  • 我有一个有3台机器的Kafka集群。和一个有6个分区(每台机器2个分区)的主题。当我启动一个有6个使用者线程并且属于一个组的使用者应用程序时。我知道一个使用者线程将被分配一个分区。我想知道的是:使用者线程的任务将在分区所在的机器上运行?或者将运行在应用程序被SRARD的机器上?

  • 众所周知,Flink有两个核心API(数据流/数据集),但当我使用Flink Sql客户端提交作业时,我不需要选择流或批处理模式。所以,Flink SQL客户机是如何决定使用批处理模式和流模式的。我在官方文件中没有找到答案。所以,我想知道Flink SQL客户端如何区分批处理模式和流模式?

  • 在下面的链接中,我试图使用-对(双向无线电) http://tim.dysinger.net/posts/2013-09-16-geting-starting-with-nanomsg.html

  • 客户端分享 对接前提 1.需要APP本身有客户端分享功能和对应的分享接口 2.在管理后台配置好并开启分享功能 分享定制 如果开发者已有自己的一套H5分享接口,可以联系兑吧技术支持,由技术支持根据分享接口要求做定制。请联系兑吧技术支持协助配置。 分享案例 1.客户端分享兑吧活动 2.分享结果 3.点击分享跳转兑吧活动页 4.点击参与跳转下载页