为什么我无法访问通过 node.js 中的密钥 socket.io 发送的数据
Why can’t I access data sent via socket.io by key in node.js?
我使用 socket.io 从我的网页发送一些数据,然后在节点.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
});
我在节点中处理它.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 语句,因为我的键不匹配?
我需要更改什么才能完成这项工作?
记录您发送的对象以查看其内容,它没有Key
。
所以你真正想做的是发送这个对象:
socket.emit('key', { Key: 'Speed', value: joystick1.deltaY() });
data 参数是一个 javascript Object
或 javascript 哈希。此对象没有 Key
或 Value
属性。
要测试您的对象是否具有键,请使用 data.hasOwnproperty('Speed')
.如果要获取此属性的值,请使用 data['Speed']
或等效的点表示法data.Speed
。
相关文章:
- API密钥使用和检查示例
- react.js中的密钥绑定
- JS对象密钥序列
- 似乎无法使用javascript从AWS 3S中删除密钥
- 加载两个具有相同父密钥名称的json文件
- 如何获取$data.Entity的密钥
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- CryptoJS和密钥/IV长度
- 基于api密钥的NodeJS web服务
- 输入密钥和firefox提示
- React Rails应用程序中动态子项的密钥分配问题
- 正在Javascript Cookie中设置重复密钥
- 通过localStorage中的密钥获取ID
- 从密钥中获取价值.JavaScript
- Javascript对象中的跨浏览器密钥查找性能
- D3动态json密钥名称
- OAuth 2.0 OpenID连接环回和密钥斗篷
- 从ng条消息中提取ng条消息密钥
- 为什么我无法访问通过 node.js 中的密钥 socket.io 发送的数据
- 什么是“.Socket.io中的ack密钥