套接字服务器向客户端广播,但不从两者接收
socket server broadcasting to clients, but not receiving from both
我真的被我遇到的这个错误弄糊涂了,希望有人能告诉我为什么我的代码响应奇怪。
我做了一个简单的游戏,应该允许客户端按下按钮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"吗?
问题是每个客户端都有自己的服务器连接。on-connection函数中的任何变量都只能用于该客户端。
您可以将A
和B
的声明移动到顶层,这样所有连接都将访问相同的变量。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 将客户端特定的日期格式返回到服务器MVC4
- 服务器上的Meteor客户端断开连接事件
- 在Javascript服务器/客户端中共享对象定义
- 可以't连接客户端和服务器import.io
- 套接字服务器向客户端广播,但不从两者接收
- 使用COMETD将服务器推送到客户端(dojo)
- 了解如何在javascript/HTML5/NodeJS中实现客户端-服务器-客户端基础结构
- 服务器过载..有要求?如何有效地对服务器-客户端进行编程
- Math.sin()在服务器/客户端上给出不同的结果
- Internet Explorer浏览器问题:浏览器不提交POST数据与Ajax请求,服务器/客户端挂起
- 如何在连接服务器客户端之前获得IP地址(使用websockets/ws)
- Node.js服务器/客户端模块混乱,EventEmitter问题
- 服务器-客户端推/拉连接是如何工作的
- 如何执行在服务器/客户端使用回调参数的javascript函数
- 最好的jQuery/Java PHP解决方案为本地主机服务器-客户端实时聊天