2012-09-18 69 views
3

我遇到了socket.emit不會發送數組的問題。NodeJS Socket.IO不會將數組傳遞給客戶端

當客戶端收到它時,它完全是空的。

服務器端:

var connectedUserNames = new Array() ; 
socket.on('USER_ONLINE', function(data){ 
    connectedUserNames[socket.id] = data ; 
    console.log(data+' has connected.') ; 
}) 
io.sockets.emit('CONNECTED_USERS', connectedUserNames); 

客戶端:

socket.on('CONNECTED_USERS', function(data){alert(data); 
    $('#connectedusers').attr('title', data) ; 
}) 

這是一個的NodeJS錯誤?如果是這樣,我怎麼能解決這個問題?

回答

5

你的訂單看起來非常不錯。您在USER_ONLINE事件之外的某個地方發出CONNECTED_USERS,因此它很可能沒有填充數據。順便說一句,你聲明Array,但你像一個普通的對象訪問它。如果你不需要一個索引數組,你應該創建一個純Object

var connectedUserNames = {}; 

或使用Array.prototype.push,這樣更方便易有

connectedUserNames.push(data); 

儘量拉此行

io.sockets.emit('CONNECTED_USERS', connectedUserNames); 

納入您的USER_ONLINE事件中,然後確保您的客戶實際上在某個時間觸發了該事件,因此您的服務器可以對此做出反應。

相關問題