我正在使用socket.io从我的网页发送一些数据,然后在node.js后端处理它。
我用来发送数据的代码是:
var joystick1 = new VirtualJoystick({
container : document.body,
strokeStyle : 'cyan'
});
setInterval(function(){
var outputEl = document.getElementById('resulty');
outputEl.innerHTML = joystick1.deltaY();
//THE DATA IS SENT HERE
socket.emit('key', {Speed: joystick1.deltaY()});
}, 1/30 * 1000);
joystick1.addEventListener('touchStartValidation', function(event){
var touch = event.changedTouches[0];
if( touch.pageX >= window.innerWidth/2 ) return false;
return true
});
我使用以下代码在node.js中处理它:
socket.on('key', KeyReceived); //Key received from client
function KeyReceived(data)
{
//DATA IS PRINTED HERE
console.log(data);
switch(data.Key)
{
case "Steering":
_direction = 90 + data.value;
console.log(_direction);
break;
case "Speed":
_speed = 90 + data.value;
console.log(_speed);
break;
case "Adjustment":
_adjustment = data.value;
break;
}
}
在控制台中打印出我的数据,但出于某种原因它不会进入我的case语句,因为我的键不匹配?
我需要做些什么来改变这项工作?
答案 0 :(得分:2)
记录您要发送的对象以查看其内容,但它没有Key
所以你真正想做的就是发送这个对象:
socket.emit('key', { Key: 'Speed', value: joystick1.deltaY() });
答案 1 :(得分:2)
data参数是javascript Object
或javascript哈希。此对象没有Key
或Value
属性。
要测试您的对象是否具有密钥,请使用data.hasOwnproperty('Speed')
。如果您想获取此属性的值,请使用data['Speed']
或等效的点符号data.Speed
。