在Socket.io中发送第一个连接的某些状态

时间:2013-01-11 02:06:53

标签: node.js socket.io

我正在使用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 个答案:

答案 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?