3

我遇到了 socket.emit 不会发送数组的问题。

当客户收到它时,它只是完全空的。

服务器端:

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 的错误吗?如果是这样,我该如何解决这个问题?

4

1 回答 1

5

你的订单似乎很不合适。CONNECTED_USERS您在事件之外的某个地方发出USER_ONLINE,所以它很可能没有填充数据。顺便说一句,您声明了 anArray但您像访问普通对象一样访问它。如果你不需要索引数组,你应该只创建一个普通的Object

var connectedUserNames = {};

或 use Array.prototype.push,那里更方便

connectedUserNames.push( data );

试着拉这条线

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

进入您的USER_ONLINE事件,然后确保您的客户端实际上在某个时候触发了该事件,以便您的服务器可以对此做出反应。

于 2012-09-18T10:33:38.057 回答