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)

もう1つのオプションは、socket.io名前空間を使用することです。これにより、ラウンドトリップを回避できますが、名前空間とチャネルにはいくつかの違いがあり、アプリにとってどちらがより理にかなっているのかを判断する必要があります。

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

ここで受け入れられた答えは、チャネルと名前空間の違いの良い要約を持っています。socket.io部屋または名前空間?

于 2013-01-11T17:02:53.837 に答える