我从socket.io服务器获取一个值,然后将其传递给客户端以便显示。我传递的一个变量工作正常,但另一个变量首先显示一个值,然后返回为“undefined”。我不确定为什么会这样,因为这两个值都显示在客户端控制台中没有问题。
这是客户端JS的关注点:
var socket = io();
socket.on('broadcast',function(data) {
document.getElementById("output").innerHTML = data.rating;
document.getElementById("output").innerHTML = data.description;
console.log(data);
console.log(data.rating);
});
...这里是server.js文件:
biasDetector.stdout.on('data', function(data) {
var outputText = data.toString('utf8');
var rating = (reliabilityResult['type']);
console.log(outputText);
console.log("Second check" + rating);
io.sockets.emit('broadcast',{description: outputText}, {rating: rating});
});
我在整个server.js中多次检查rating
的值,并且它永远不会被定义为未定义,这使我相信它是一个客户端JS问题,因为我得到了另一个值{ {1}}没有问题。
谢谢!
答案 0 :(得分:0)
您正尝试使用以下方式发送两个单独的对象:
io.sockets.emit('broadcast',{description: outputText}, {rating: rating});
但是,然后尝试从接收端的单个对象中读取这两个属性:
socket.on('broadcast',function(data) {
document.getElementById("output").innerHTML = data.rating;
document.getElementById("output").innerHTML = data.description;
});
更改服务器以将两个属性放在一个对象上:
io.sockets.emit('broadcast', {description: outputText, rating: rating});
所以发送方与阅读方匹配。