javascript - 通过python websockets发送后用JS解码JSON字符串
问题描述
我的 JavaScript 代码无法读取 JSON 对象中的值。
我的设置是:Raspberry pi 上的传感器 -> python -> Websockets <- JS <- p5.js 绘图。
我对 JavaScript 不是很流利,所以这是最有可能出现问题的地方。使用 python,我生成了一个如下所示的字典:
a_dict = {'humidity' : 55.1, 'temperature' : 33.9, 'magneticfield' : 13.2}
然后json.dumps(a_dict)
,我使用websockets库将其发送到服务器。在浏览器中,我这样做:
var ws = new WebSocket("ws://127.0.0.1:1234/")
ws.onmessage = function(event){
window.sensordata = JSON.parse(event.data);
}
在同一个文件中,我尝试访问p5.js
绘图的数据:
function setup(){ some code here }
function draw() {
ellipse(window.sensordata.humidity, 10,10,10)
}
此行window.sensordata.humidity
触发
未捕获的类型错误:无法读取未定义的属性“湿度”
这是我尝试过的:
更改首先绘制/第二个 websocket 的顺序(反之亦然)
console.log(window.sensordata)
使用正确的字段打印正确的对象,但console.log(window.sensordata.humidity)
抛出与上述相同的错误。调用它
window.sensordata['humidity']
也无济于事。
编辑:
我试过运行它只发送一个字符串的流(而不是 JSON)。该代码有效(绘图实时适应传感器的值)。这个要点显示了代码。
我在浏览器控制台中观察到了一个新行为:如果我
console.log(window.sensordata)
在以大约 50fps 运行的 draw() 函数内部,控制台会显示undefined
前 1 到 3 个项目,然后返回一个值。会不会是服务器延迟?
解决方案
推荐阅读
- node.js - 如何在创建其他模型实例时引用现有模型实例?
- c++ - 使用流时如何返回 8.0 而不是 8?
- javascript - KaTeX 不渲染
- javascript - Netsuite SCA:如何在函数 netsuite 中传递 javascript 变量?
- bash - 如何将 curl 的 grep 输出保存到变量而不将其记录到控制台?
- java - 在 java 代码中实现 UML 三元关联
- javascript - 从另一个 div 类获取 div 类的属性以进行角度量角器测试
- swagger - 服务堆栈 (4.5.0) Swagger UI
- go - go get 命令做缓存吗?
- python - Paypal IPN notify_url 未在 django 项目中调用