[英]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.