imp*_*335 3 javascript jquery node.js socket.io
我遇到过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);
Run Code Online (Sandbox Code Playgroud)
客户端:
socket.on('CONNECTED_USERS', function(data){alert(data);
$('#connectedusers').attr('title', data) ;
})
Run Code Online (Sandbox Code Playgroud)
这是NodeJS的错误吗?如果是这样,我怎么能解决这个问题呢?
你的订单似乎很不合适.你CONNECTED_USERS在USER_ONLINE事件之外的某个地方发射,所以很可能没有填充数据.顺便说一句,你声明了一个,Array但你像普通对象一样访问它.如果您不需要索引数组,则应该只创建一个普通数组Object
var connectedUserNames = {};
Run Code Online (Sandbox Code Playgroud)
或使用Array.prototype.push,这在那里更方便
connectedUserNames.push( data );
Run Code Online (Sandbox Code Playgroud)
试着拉这条线
io.sockets.emit('CONNECTED_USERS', connectedUserNames);
Run Code Online (Sandbox Code Playgroud)
进入你的USER_ONLINE事件,然后确保,你的客户端实际上在某个时刻触发了该事件,因此你的服务器可以对此作出反应.
| 归档时间: |
|
| 查看次数: |
7507 次 |
| 最近记录: |