我有一台服务器并且需要连接4个客户端并且在这部分有问题,因为只有cas连接一个客户端,客户端会自动停止在smarthphone中。与1位客户合作。
我想将每个客户端的数据存储在一个数组中,并将这些数据显示在这样的字符串中:
"0#0.0 0.0 3593.0#3#0.0# 0#0.0 0.0 3593.0#3#0.0# 0#0.0 0.0 3593.0#3#0.0# 0#0.0 0.0 3593.0#3#0.0#"
每个客户端的数组应包含发送到该客户端的所有消息。不幸的是,我每个客户端只收到一条消息,如下所示:
"0#0.0 0.0 3593.0#3#0.0#"
我想知道如何为数组或对象中的每个客户端累积数据。
这是我目前的做法:
服务器代码:
var map = {};
function storeInfo(event, value){
map[event]= value;
}
io.on('connection', function(socket) {
var clientPlayer = null;
socket.on('message', function(data) {
var sessionid = socket.id;
if(sessionid in map){
map[sessionid] = data;
var result = [];
for(var o in map){
result.push(map[o]);
}
result.join(" ");
socket.broadcast.emit('message', result);
} else {
storeInfo(sessionid, data);
}
socket.emit('message', data);
});
});
答案 0 :(得分:0)
map
对象应该按照您的建议将数据存储在每个套接字ID的数组中。您可以使用以下格式定义storeInfo
函数:
function storeInfo(event, value){
if(map[event]) {
map[event].push(value);
} else {
// Initialize the value of each key as an array.
map[event] = [];
map[event].push(value);
}
}
然后您可以这样使用它:
socket.on('message', function(data) {
var sessionid = socket.id;
storeInfo(sessionid, data);
var result = [];
for (var key in map) {
result.push(map[key].join(' '));
}
result.join("\n");
socket.broadcast.emit('message', result);
socket.emit('message', data);
});