当前位置: 首页 > 知识库问答 >
问题:

socket.io:将消息发送到特定的房间(客户端)

公冶京
2023-03-14

在socket.io中,如果要将消息发送到特定的房间,通常在服务器端使用特定的语法:io.to(room).emit('event','message');

但是客户机(我指的是在浏览器中运行的socket.io相关代码)如何指示消息应该发送到特定的房间?

socket.emit('chat message', {room: 'abc', msg: 'hello there'});

还是socket.io客户端库也为此目的提供了特定的语法?

编辑:澄清一下,我上面的建议似乎起作用了,我只是不确定是否有更好的解决方案

共有1个答案

萧远
2023-03-14

你已经想通了。只有服务器可以发射到特定的房间,因为实际上只有服务器连接到多个客户端。换句话说,客户机并不相互连接-- ,客户端库只管理一个客户机和服务器之间的通信。因此,如果您希望您的客户端应用程序指示服务器向连接到给定房间的所有客户端发送消息……这是基本的API设计。您可以发出套接字事件,或者只是对服务器上的路由执行常规http调用。无论哪种方式,您都将发送关于服务器应该广播到哪个房间的元数据。但是,前者(发射)可能是首选,因为在服务器端,您可以使用socket.broadcast.to向房间中的所有客户机发射,除了启动调用的套接字(这是一个非常常见的用例)。

 类似资料:
  • 问题内容: 向所有客户端发送消息效果很好,但是我想向特定的用户名发送消息。我的server.js文件看起来像。它的作用是在运行时,客户端代码将用户添加到对象用户名以及套接字对象中。并立即将单个消息返回给每个连接的客户端。 发出消息的部分 问题答案: 试试这个: socket.id由socket.io保存,并且包含客户端的唯一ID。您可以使用以下命令进行检查:

  • 问题内容: 我正在使用socket.io和node.js,直到现在看起来还不错,但我不知道如何从服务器向特定客户端发送消息,如下所示: 但是无论是还是方法似乎都无法满足我的需求。 我发现一种可能的解决方案是,该方法将不发送消息的SessionId数组作为第二个参数,因此我可以将此时连接了所有SessionId的数组传递给服务器,除了那个我希望发送邮件,但是我觉得必须有一个更好的解决方案。 有任何想

  • 我想发送数据到一个特定的套接字ID。 在旧版本中,我们曾经能够做到这一点: 我将如何在Socket.io1.0中执行类似的操作?

  • 问题内容: 我从socket.io + node.js开始,我知道如何在本地发送消息和广播功能:-所有连接的客户端都收到相同的消息。 现在,我想知道如何向特定的客户端发送私人消息,我的意思是一个套接字,用于2个人之间的私人聊天(客户端到客户端流)。谢谢。 问题答案: 当用户连接时,它应使用唯一的用户名(例如电子邮件)向服务器发送消息。 一对用户名和套接字应存储在这样的对象中: 在客户端上,使用以下

  • 问题内容: 我是Go的新手,并且发现自己作为第一个项目使用套接字。这是一个多余的问题,但是我无法理解如何将Websocket更新发送到Go中的特定客户端(使用Gorilla)。 我要解决的主要问题是-使用websocket和搜索引擎(如ES / Lucene)建立预输入。我在搜索引擎上维护了一堆索引,并在其周围进行了Go包装。当我开始在Go中使用websockets时,几乎发现了所有展示广播机制的

  • 我使用这个聊天室示例作为参考,设置了一个多房间的socket.io/nodeJS聊天服务器: https://raw.githubusercontent.com/socketio/socket.io/master/examples/chat/index.js 我使用这个doc将代码从单间修改为多间: https://socket.io/docs/roams-and-namespaces/ 我还修改