首页 > 解决方案 > 如何通过 socket.io 发送数组

问题描述

我将所有用户存储在一个数组中,我想通过 socket.io 将该数组发送给所有客户端。我有这个代码

var players = new Array();

io.on('connection',function(socket){
var player = {
    id: socket.id,
    serverid: 0,
    x: randomInt(100,400),
    y: randomInt(100,400)
};
players[socket.id] =  player;

这就是我存储它的方式,然后我将它发送给客户

io.emit('new_player',players);

但我得到的只是一个空数组,但会发出单人游戏。

整个代码

var players = new Array();

io.on('connection',function(socket){
var player = {
    id: socket.id,
    serverid: 0,
    x: randomInt(100,400),
y: randomInt(100,400)
};
players[socket.id] =  player;
io.emit('new_player',JSON.stringify(players));
socket.on('disconnect',function(){
    console.log('dced');
});

});

标签: javascriptnode.jssocket.io

解决方案


使用字典而不是Array你所做的事情:

var players = {}; // Dictionnary instead of an array

io.on('connection', function(socket){
  var player = {
    id: socket.id,
    serverid: 0,
    x: randomInt(100,400),
    y: randomInt(100,400)
  };

  players[socket.id] =  player;
  io.emit('new_player', players); // Send the dictionnary

  socket.on('disconnect', function(){
    console.log('dced');
  });
});

推荐阅读