2017-12-13 5 views
0

私は簡単なチャットを作っていますと、現在のクライアントのリストを取得します。 Edgeを介して "Ted"として、 "Ted"がログインしたときに "Ted"と表示され、私はChromeとのチャットを見ています。誰かがログオンしたときに私はこれを持って、ユーザ名

しかし、ログインするとすぐにユーザー名で現在のクライアントのリストを取得するにはどうすればよいですか?

"Ted"が既に存在し、別のブラウザから "Bob"としてログインしている場合、リストに "Ted"が表示されます。

ログインする各ユーザーを格納するデータベースを使用せずに行うことができますが、それは私が考えることができる唯一の方法であるが、データベースを使用しないことを望む唯一の方法ですか?

答えて

0

データベースを使用する必要はありません。唯一必要なのは、特定のイベントリスナーサーバー側に接続されているユーザーの配列です。例:

var users = []; // Array of users online 
io.on('connection', function(socket) { 
    var user = { // On connection, create an object for the user. 
     socket: socket, 
     username: null 
    } 

    socket.on("login",function(data) { // When the user logs in, set his username and add him to the users array. 
     user.username = data.username; 
     users.push(user); 
    }); 

    socket.on("disconnect",function() { // When user disconnects, remove the object from the array. 
    var index = users.indexOf(user); 
    if (index !== -1) users.splice(index); 
    }); 
}); 

ご覧のとおり、アクセスできるすべてのオンラインユーザーの配列があります。

関連する問題