我正在使用Socket.IO和node.js,到目前为止,它看起来相当不错,但我不知道如何将消息从服务器发送到特定的客户端,如下所示:

client.send(message, receiverSessionId)

.send().broadcast()方法似乎都不能满足我的需求.

我发现一种可能的解决方案是,.broadcast()方法接受SessionId数组作为第二个参数,不向其发送消息,因此我可以传递一个数组,其中包含当时连接到服务器的所有SessionId(我希望发送消息的服务器除外),但我觉得肯定有更好的解决方案.

有什么主意吗?

推荐答案

好吧,你必须抓住客户(惊喜),你可以 Select 简单的方式:

var io = io.listen(server);
io.clients[sessionID].send()

这可能会打破,我怀疑,但它总是有可能,io.clients可能会被改变,所以使用上述谨慎

或者您自己跟踪客户机,因此您可以在connection侦听器中将它们添加到自己的clients对象中,并在disconnect侦听器中删除它们.

我会使用后一种方法,因为取决于你的应用程序,你可能希望客户端有更多的状态,所以大约clients[id] = {conn: clientConnect, data: {...}}个就可以了.

Javascript相关问答推荐

我试图实现用户验证的reduxstore 和操作中出了什么问题?

Plotly热图:在矩形上zoom 后将zoom 区域居中

jQuery提交按钮重新加载页面,即使在WordPress中使用preventDefault()

扫描qr code后出错whatter—web.js

React Code不在装载上渲染数据,但在渲染上工作

如何在angular中从JSON值添加动态路由保护?

Msgraph用户邀请自定义邮箱模板

react—router v6:路由没有路径

Angular 17—每当一个布尔变量变为真时触发循环轮询,只要它保持为真

google docs boldText直到按行执行应用脚本错误

当试图显示小部件时,使用者会出现JavaScript错误.

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

从页面到应用程序(NextJS):REST.STATUS不是一个函数

如何将数组用作复合函数参数?

扩展类型的联合被解析为基类型

触发异步函数后不能显示数据

更改agGRID/Reaction中的单元格格式

JavaScript将字符串数字转换为整数

使用可配置项目创建网格

如何在Java脚本中并行运行for或任意循环的每次迭代