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

在socket.io中用第一个连接发送一些状态

商宝
2023-03-14

我正在使用socket.io,并在寻找一种方法让客户机能够指定它希望连接到哪个房间,但我想不出一个很好的方法来实现这一点。

在服务器上我有:

io.sockets.on 'connection', (socket)->
    console.log 'A socket connected.'
    socket.join('my_room')

在客户端上我有:

io = io.connect("http://domain.com")

我想要做的是在客户端的第一个连接中获得一些初始状态,以便服务器知道它应该尝试将人连接到哪个房间。

因此,在客户端上类似于以下内容:

io = io.connect("http://domain.com", room_1)

那么服务器就会有类似这样的东西:

io.sockets.on 'connection', (socket, data)->
    console.log 'A socket with connected!'
    socket.join(data)

这可能与房间有关吗?有更好的办法吗?我查看了名称空间,但房间更符合我试图做的事情。

共有1个答案

宋凌龙
2023-03-14

我同意德里切夫的观点。您应该只在客户端的connect事件上发送数据。

io = io.connect 'http://domain.com'

io.on 'connect', () ->
    socket.emit('join-room', room_1)

另一种选择是使用socket.io命名空间。这将允许您避免往返,但名称空间和通道之间存在一些差异,您必须确定哪个对您的应用程序更有意义。

io=io.connect'http://domain.com/room_1'

这里公认的答案对通道和名称空间之间的差异有一个很好的概述。io房间还是命名空间?

 类似资料:
  • 问题内容: 我想一个简单的聊天应用程序在这里与socket.io和node.js中 每次重新启动node.js服务器时,socket.io都会自动重新连接,并以某种方式创建与服务器的另一个连接,即客户端现在两次收到相同的聊天消息。我该如何解决? 问题答案: 默认情况下,在disconnect socket.io上重新连接丢失的连接,从而重新运行事件。因此,每次重新连接时,您都会添加一个事件监听器来

  • 我在询问之前搜索了这个问题,但我找不到类似的东西。我开发了一个客户端/服务器解决方案来发送/接收HL7消息。我使用套接字将客户端连接到服务器,从这个连接中,我只能使用OutputSteam对象发送1条HL7消息。我如何在同一个套接字连接中发送多个HL7?我尝试了不同的方法,但它们不能正常工作。 以下是我的客户端代码: 从服务器端 如何在同一套接字连接中发送更多HL7消息?

  • 我创建了简单的应用程序来开始使用 socket.io,但是当我运行它时,Chrome(在其他浏览器中测试,结果相同)会吃掉我所有的 CPU 并发出许多请求: 我是套接字新手,但我肯定这不是它应该如何工作。在浏览器中运行的代码非常简单,它应该只连接到套接字并将所有接收到的数据记录到控制台: 索引.html 另外,我的服务器文件如下所示: 服务器.js 当我运行服务器时,我让,一切似乎都很好。但是当我

  • 问题内容: 我在客户端上将nodejs与socket.io和angularjs一起使用。我从互联网上获取了angular- socketio示例,并向其中添加了方法。 套接字服务: 控制器: 但是,当我尝试使用此方法断开连接时,出现错误: 而且我不知道在哪里挖…… 问题答案: [更新] 是Angular的内部私有变量,因此您不应该真正依赖于此类事情。伊戈尔在另一个答案中描述了一些处理此问题的建议,

  • 问题内容: 当与socket.io握手时,是否可以轻松地传递身份验证cookie?我目前必须分别进行操作,如下所示: 问题答案: WebSockets确实支持cookie,因为它们是基于HTTP的,但是快速浏览Socket.IO的源代码显示不支持此内置。 因此,在这种情况下,直接使用cookie并不是可行的解决方案,而且,由于您使用的是Socket.IO,因此不能保证用户实际上会通过WebSock

  • 我用socket.io通过nodejs和angular4编写了代码。我使用过2种不同的浏览器,我检查了连接和socket.io给了2个不同的socket.id,但是当发出2个浏览器时,却是从1个id发出的! 应用程序中的代码.js 代码发出 客户端的代码侦听 我所有的代码 初始化app.js 在chat.js路由添加新消息后发送聊天