2012-05-07 10 views
0

シンプルなログアウトとログインで簡単なアプリケーションを作成しようとしています。ログインしている間に部屋に入っていて、ログアウト中にsocket.leave( 'room')で部屋を出ています。Cantは同じページでSocket.on( 'connect'、function(){})を2回目に実行します

問題は、リフレッシュしないで同じページに再度ログインすると、socket.on( 'connect'、...)内のコードが実行されないということです。この問題を解決するのを手伝ってください。

+1

「参加時」など(カスタムメッセージ)に変更することを検討してください。 connectは、Webソケットバックエンドへの接続時にsocket.ioのインフラストラクチャによって使用されます。 –

+0

正しく答えるにはいくつかのコードが必要です。 – drinchev

答えて

0

Jakub氏によると、「connect」イベントは、クライアントがサーバーに接続したときに起動します。ルームは、接続の上に余分な名前空間です。誰かが参加するたびにコードを実行したい場合、最も簡単な方法は、socket.join('whatever')呼び出しが行われた後にそのコードを実行させることです。

少し複雑ですが、おそらくより包括的な解決策は、部屋に参加するための何らかの処理を行うことです。私はあなたがsocket.on('join', fn)を行うことができますが、それをショットを与える場合は手をオフにはわかりません。それがうまくいかない場合は、バックエンドを介して購読可能である必要があります。

socket.manager.store.subscribe('join', function (id, room) { 
    //do whatever 
}); 
関連する問題