javascript - 如何通过 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');
});
});
解决方案
使用字典而不是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');
});
});
推荐阅读
- python - Pandas - 按值合并按索引行到新列
- ios - 如何使底部工作表显示在 viewDidLoad() 上?
- javascript - 具有拖放重新排列节点/插入节点的 Angular JavaScript 树视图
- sql - how to update multiple records in sql
- java - java在方法中输入多个字符串
- angular - Ion-select multiple="true" 在 ngFor 中不起作用
- java - 如何更改字符串链表的内容
- angular - 每次部署后 Angular 应用程序都需要刷新浏览器
- sas - SAS 数据步骤中的 SAS 连接
- android - 从 Android Studio 的列表中呼叫联系人