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

在多个节点实例中共享IO对象

淳于兴朝
2023-03-14
问题内容

我想在两个节点实例之间共享由socket.io创建的房间,这些实例已经在使用redis-
store,但是无法在不同的节点实例上获取io.sockets.in(ROOM_ID).emit(MESSAGE,DATA);

我正在尝试-实例A-

io.set('store',...)

io.on('connection',function(socket){
   socket.join(''room-ABCD);
});

开阔一些东西,我能够使用

io.sockets.in('room-ABCD').emit('event',{data:{}});

但是我需要从实例B执行类似的广播。

在实例B io.set('store')上与上面类似,但我无法使用io.sockets.in('room- ABCD').emit('event',{data:{}})

我的理解是-redisStore会将socket +
room信息放入redis,以便其他进程可以访问它。[如果我错了,请更正]。现在,我不知道如何在节点的其他过程中识别和获取此信息。

谢谢。


问题答案:

回答与问题有关的查询- 一,二和一。

我需要集中的确切地点是-Joinig房间。

我正在使用client_socket.join("room_name"),但是它将客户端套接字推到房间。

现在,尝试io.sockets.socket(client_socket.id).join("room_name")

这会将会议室成员推送到Redis,现在可以在另一个节点实例中访问它们。

在过程B中io.sockets.in("room_name").emit("event_name",{data:"1"})工作。



 类似资料:
  • 问题内容: 我想为一个聊天室应用程序创建一个node.js服务器集群,以支持高并发性。我需要能够在所有节点之间共享信息。我试图找出使所有服务器保持同步的最佳方法。我希望在共享对象中具有尽可能大的灵活性,因为我计划在将来添加更多功能。 到目前为止,我想到了两种解决方案: 订阅NoSQL密钥(例如redis publish-subscribe) 节点使用套接字彼此更新。 哪个更好?还有其他想法吗? 问

  • 我想创建一个具有两种节点类型的网络:所有者和共享对象。这里有一个玩具的例子,假设3个孩子:汤姆、萨姆和玛丽共享3个馅饼。 其中边的大小由每个子对象拥有的饼图份额加权。

  • 我有一个类“Vertex”包含双x,y。另一个类“Face”包含一个“Vertex”对象列表。相邻面共享相同的顶点。 目前,我正在为每个脸创建一个javafx.scene.shape.多边形,并将它们全部添加到我的场景中,看起来像这样:截图 现在我计划修改多边形,类似于:JavaFX modify polygons 问题是多边形不会保存对顶点对象的引用,而是保存双值。当我改变一个点的位置时,相邻多

  • 目前,我正在我的项目中创建一个Jenkins共享库,在实例化一个对象时遇到了一个问题。 我的应用程序的树结构 -day#1 --/詹金斯档案 --/src/File1。groovy --/测试/文件1规范。groovy --/vars/file1。groovy 从我的Jenkins文件中,我可以调用file1。函数,inturn将创建写入文件中的类对象/src/File1。groovy和它工作得很

  • 我使用vert. x作为api网关将调用路由到下游服务。 到目前为止,我使用的是跨多个垂直链接共享的单个web客户端实例(通过GUI注入) 每个verticle都有自己的webclient有意义吗?它是否有助于提高性能?(我的每个网关实例运行64个Vericle,每秒处理大约1000个请求) 每种方法的优缺点是什么? 有人能帮忙找出同样的理想策略吗? 谢谢

  • 我使用的是Python多处理,更准确地说 这种方法具有巨大的内存消耗;几乎消耗了我所有的RAM(此时它变得非常慢,因此使多重处理变得非常无用)。我认为问题在于是一个巨大的对象(一个大型pandas数据文件),每个进程都要复制它。我尝试使用共享数据文件,而不复制 我是第一次使用多重处理,也许我的理解还不够好。实际上是在这种情况下使用的正确方法吗?我已经看到了其他的建议(例如队列),但现在有点困惑。共