0

我正在使用 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)

这可能与房间有关吗?有没有更好的办法?我研究了名称空间,但房间更适合我想要做的事情。

4

1 回答 1

4

我同意 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 房间或命名空间?

于 2013-01-11T17:02:53.837 回答