【问题标题】:NodeJS Socket.IO won't pass array to clientNodeJS Socket.IO 不会将数组传递给客户端
【发布时间】:2012-09-10 14:34:28
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery node.js socket.io


    【解决方案1】:

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

    var connectedUserNames = {};
    

    或者使用Array.prototype.push,那里更方便

    connectedUserNames.push( data );
    

    试着拉这条线

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-10
      • 2018-08-13
      • 2013-02-21
      • 2014-01-13
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多