Javascript Node.JS通过Socket.IO发送错误数据
我使用Node.JS和Socket.IO来交换数据。我有以下“模式”:Javascript Node.JS通过Socket.IO发送错误数据,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我使用Node.JS和Socket.IO来交换数据。我有以下“模式”: “本地”Socket.IO服务器,设置间隔为10秒,在每次迭代中广播不同的数据 “global”Socket.IO服务器,根据HTML客户端的请求,从“local”服务器接收数据(以下代码中的ioLocal变量是Socket.IO客户端),使用通过HTML客户端请求传递的数字修改数据并发送到客户端 问题是HTML客户端接收到错误的数据。想象一下,对于时间戳,本地服务器广播消息“2”。同时,两个不同的HTML客户机请求数据
- “本地”Socket.IO服务器,设置间隔为10秒,在每次迭代中广播不同的数据
- “global”Socket.IO服务器,根据HTML客户端的请求,从“local”服务器接收数据(以下代码中的ioLocal变量是Socket.IO客户端),使用通过HTML客户端请求传递的数字修改数据并发送到客户端
<!DOCTYPE html5>
<html>
<head>
<title>Socket.IO MultiClient Test</title>
<script type="text/javascript" src="http://10.0.1.180:3000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://10.0.0.219:9090');
function go(){
var message = document.getElementById('message').value;
socket.emit('data_rt', message);
};
socket.on('rsp_data_rt', function(num){
document.getElementById('result').innerHTML = num;
})
</script>
</head>
<body>
<h1>Socket.IO Multiclient</h1>
Message: <input type="text" id="message"><br />
<button type="button" onclick='go()'>Send</button>
Result: <span id="result"></span>
</body>
</html>
Socket.IO多客户端测试
var socket=io.connect('http://10.0.0.219:9090');
函数go(){
var message=document.getElementById('message')。值;
socket.emit('data\u rt',message);
};
socket.on('rsp\u data\u rt',函数(num){
document.getElementById('result')。innerHTML=num;
})
Socket.IO多客户端
消息:
发送
结果:
在对数据广播进行任何操作之前,您是否检查过您在数据广播中接收到的数字?您能否解释一下“全局”和“本地”socket.io服务器的必要性以及您所说的“全局”和“本地”socket.io服务器的含义。@AndreasHultgren在数据广播中,我收到了我在问题中所写的最后一次乘法运算。这就是问题所在。我认为var数据是“范围独立的”,然后我尝试将该变量设置为socket属性,但没有成功。而不是data=data*num代码>我尝试了othervar=data*num
,但也没有成功@“全局”和“本地”是两个不同的socket.io服务器。我只称它们为“全局”和“本地”,因为一个是我的生产站点的“本地”,另一个在另一个位置……但如果是这样的话,问题就出在发送数据广播的函数中,而您还没有发布这些内容。@AndreasHultgren我已经用所有代码编辑了这个问题。
var ioLocal = require('socket.io').listen(9091);
ioLocal.sockets.emit('data_broadcast', 2);
<!DOCTYPE html5>
<html>
<head>
<title>Socket.IO MultiClient Test</title>
<script type="text/javascript" src="http://10.0.1.180:3000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://10.0.0.219:9090');
function go(){
var message = document.getElementById('message').value;
socket.emit('data_rt', message);
};
socket.on('rsp_data_rt', function(num){
document.getElementById('result').innerHTML = num;
})
</script>
</head>
<body>
<h1>Socket.IO Multiclient</h1>
Message: <input type="text" id="message"><br />
<button type="button" onclick='go()'>Send</button>
Result: <span id="result"></span>
</body>
</html>