簡體   English   中英

使用socket.io將數組從服務器發送到客戶端

[英]Sending array from server to client with socket.io

我正在開發一個小型聊天應用程序,並且希望能夠顯示已連接用戶的列表。 為此,在服務器端,我有:

var users = {};

    io.on('connection', function(socket){
        socket.on('newUser', function(pseudo) {
            socket.pseudo = pseudo;
            users[socket.pseudo] = socket;
            io.sockets.emit('newUser', pseudo);
            console.log(Object.keys(users));
        });

如果我連接了用戶root,控制台會將我發回[ 'root' ] 這就是我在客戶端的內容:

var pseudo = '#{user.username}';
socket.emit('newUser', pseudo);

    socket.on('newUser', function(pseudo) {
        $('#messageZone').append('<p><em>' + pseudo + ' just joined the conversation !</em></p>');
    });

所以我的問題是,當客戶端相互連接並在div顯示時,如何將完整的更新users數組發送給每個客戶端?

謝謝您的幫助!

如果只想從服務器將所有當前連接的用戶發送給所有其他用戶,則可以執行以下操作:

io.sockets.emit('allUsers', Object.keys(users));

並且,在客戶端中將此列表設置為div:

socket.on('allUsers', function(listOfUsers) {
    $('#allUsers').html(listOfUsers.join(", "));
});

這將從users對象中獲取密鑰列表,這看起來像是每個用戶的pseudo值。 該數組將變成JSON,發送給每個客戶端。 然后,每個socket.io客戶端都會將JSON解析回一個數組,然后您會在客戶端上收到一個數組,然后可以將其放入HTML中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM