gpt4 book ai didi

javascript - 套接字服务器向客户端广播,但不从双方接收

转载 作者:行者123 更新时间:2023-12-02 19:22:53 26 4
gpt4 key购买 nike

我对遇到的这个错误感到非常困惑,希望有人能告诉我为什么我的代码响应奇怪。

我做了一个简单的游戏,应该允许客户端按下按钮 A 并向服务器发送消息“A”,然后服务器将 A 变量加 1,并发送 A 的数值(编译的服务器端)返回给所有客户。我希望如果有3个用户,每个用户都按A,那么服务器会计算出A=3。

这是我的代码:

var io = require("socket.io").listen(8888);
var http = require("http");
var url = require("url");
console.log("Server has started.");




io.sockets.on("connection", function (socket) {

var A = 0;
var B = 0;

socket.on("message", function (data) {

if (data == 'A') {
A++;
console.log(A);
}
else if (data == 'B') {
B++;
console.log(B);
}
var M = [A + '' + B]
function M(A, B) {
this.first = A;
this.second = B;
}
this.all = function() {
return A + '' + B;
}
console.log(M);
socket.emit("message", M);
socket.broadcast.emit("message", M);
});



});

结果是每个玩家似乎都在自己的计分中,因此每个玩家必须按 A 3 次才能使 A = 3,但所有玩家都会收到彼此按下按钮的广播。有人可以告诉我为什么客户端正在接收,但服务器正在从客户端的 3 个独立堆栈中接受“A”?

最佳答案

问题在于每个客户端都与服务器建立自己的连接。连接函数中的任何变量都将仅适用于该一个客户端。

您可以将 AB 的声明移至顶层,因此所有连接都将访问相同的变量。

关于javascript - 套接字服务器向客户端广播,但不从双方接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12336154/

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