通过python websockets发送后,用JS解码json字符串

时间:2018-06-25 00:44:32

标签: javascript python python-3.x websocket p5.js

我的JS代码无法读取json对象中的值。

我的设置是:Raspberry pi上的传感器-> python-> Websockets <-JS <-p5.js绘图。

我对JS不太熟练,因此最有可能出现问题。 使用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触发

  

未捕获的TypeError:无法读取未定义的属性“湿度”

这是我尝试过的:

  • 首先更改绘制顺序,其次更改websocket(反之亦然)

  • console.log(window.sensordata)打印具有正确字段的正确对象,但是console.log(window.sensordata.humidity)抛出与上述相同的错误。

  • 将其命名为window.sensordata['humidity']也无济于事。

编辑:

  • 我尝试运行它,仅发送一个字符串流(而不是JSON)。该代码有效(图形实时适应传​​感器的值)。此gist显示了代码。

  • 我在浏览器控制台中观察到一种新的行为:如果我console.log(window.sensordata)在draw()函数内部(运行速度约为50fps),则控制台会在前1个显示undefined 3个项目,然后返回一个值。会延迟服务器吗?

0 个答案:

没有答案