我正在使用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)
这可能与房间有关吗?有没有更好的办法?我查看了名称空间,但房间更贴合我想做的事情。
答案 0 :(得分:3)
我同意drinchev。您应该只在客户端发送连接事件的数据。
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'
这里接受的答案很好地说明了频道和命名空间之间的差异。 socket.io rooms or namespacing?