4

node.js エクスプレス フレームワークを使用して、簡単な勉強用チャット アプリケーションを作成しています。そして、私には1つの問題があります。ユーザーが複数のタブをアクティブにしていて、1 つのタブでログアウトした場合。他のタブへの接続を閉じて、ログインページにリダイレクトしたい。しかし、私は問題に遭遇しました。ユーザーが他のソケット セッションをログアウトしても変更されません (passport.socketio パッケージを使用しているため、socket.handshake.user に現在のユーザーがいます)。私が間違っていることは何ですか?前もって感謝します。

4

2 に答える 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 に答える