簡単なログアウトとログインで簡単なアプリを作成しようとしています。ログイン中は部屋に参加し、ログアウト中はsocket.leave('room');で部屋を出ます。
問題は、更新せずに同じページに再度ログインすると、socket.on('connect'、...)内のコードが実行されないことです。この問題を解決するのを手伝ってください
Jakubが言ったように、「接続」イベントは、クライアントが部屋に参加するときではなく、サーバーに接続するときに発生します。部屋は、接続の上に追加の名前空間です。誰かが参加するたびにコードを実行したい場合、最も簡単な方法は、socket.join('whatever')
呼び出しが行われた後にそのコードを実行することです。
少し注意が必要ですが、おそらくもっと包括的な解決策は、部屋に参加するためのある種のハンドラーをアタッチすることです。できるかどうかはわかりませんsocket.on('join', fn)
が、試してみてください。それが機能しない場合は、バックエンドを介してサブスクライブできるはずです。次のようなものが機能する可能性があります。
socket.manager.store.subscribe('join', function (id, room) {
//do whatever
});