node.js エクスプレス フレームワークを使用して、簡単な勉強用チャット アプリケーションを作成しています。そして、私には1つの問題があります。ユーザーが複数のタブをアクティブにしていて、1 つのタブでログアウトした場合。他のタブへの接続を閉じて、ログインページにリダイレクトしたい。しかし、私は問題に遭遇しました。ユーザーが他のソケット セッションをログアウトしても変更されません (passport.socketio パッケージを使用しているため、socket.handshake.user に現在のユーザーがいます)。私が間違っていることは何ですか?前もって感謝します。
質問する
1198 次
2 に答える
5
n個の異なるタブがあり、実際にはn個の異なるソケットがある場合。目的を達成する 1 つの方法は、特定のユーザーからのすべてのソケットを 1 つのroomに参加させることです。
io.on('connection', function (socket) {
socket.join(socket.handshake.user.id);
// rest of your code
}
また、ログアウト コードでは、その特定の部屋に「ログアウト」というイベントを発行します。
io.sockets.in(socket.handshake.user.id).emit('logout')
クライアント側で、目的の場所にリダイレクトする「ログアウト」時にイベント リスナーを作成できるようになりました。
于 2013-10-21T06:36:10.590 に答える