我正在使用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)
这可能与房间有关吗?有更好的办法吗?我查看了名称空间,但房间更符合我试图做的事情。
我同意德里切夫的观点。您应该只在客户端的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
我在服务器上有一个专用于套接字的Node/Express应用程序,在客户端上它是Angular 1.5。使用相同的架构(例如单独的套接字服务器)在http上本地运行代码,一切都运行得非常好。 当我在本地运行代码时,它创建了一个连接,并通过xhr进行了很少的轮询。在采用https的cloudflare上,它会进行大量轮询,不断重新连接,并且似乎不是所有消息都会到达web客户端 消息到达cloudfl