gpt4 book ai didi

javascript - 在 Socket.io 服务器中累积每个客户端的消息

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:31 26 4
gpt4 key购买 nike

我有一台服务器,需要连接 4 个客户端,这部分有问题,因为只要 cas 连接一个客户端,客户端就会在智能手机中自动停止。与 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);
});
});

最佳答案

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);
});

关于javascript - 在 Socket.io 服务器中累积每个客户端的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com