代码之家  ›  专栏  ›  技术社区  ›  Hussein

在Websockets上发送JSON

  •  0
  • Hussein  · 技术社区  · 7 年前

    我有一个简单的Python tornado Websockets服务器,从JavaScript客户端接收消息。我试图发送JSON数据,我找到的唯一解决方案是将JSON对象转换为字符串JSON,发送它,另一方面通过服务器将字符串解析回JSON。这是我的Json文件:

    {
      "events": [
        {
          "id": 0,
          "new": {
            "description": "blabla bla keyyys",
            "keys": [
              "keyyys",
              "key "
            ],
            "start": "2.000000",
            "end": "7.000000",
            "priority": "normal"
          }
        },
        {
          "id": 1,
          "new": {
            "description": "anything key ",
            "keys": [
              "keyyys",
              "key "
            ],
            "start": "0.761077",
            "end": "10.026667",
            "priority": "high"
          }
        }
      ]
    }
    

    在发送之前,我在Json中添加了另一个元素:

    var messageValue = {}; 
    var sendings;
    messageValue["messageType"] = "mainfest";
    $.getJSON("file.json", function(json) {
        messageValue["data"]= json;
        console.log(messageValue);
        sendings =  jsonToStringConvertor(messageValue);
        });
    
    var socket = new WebSocket('ws://localhost:9000/');
    
    socket.onopen = function(event){
        socket.send(sendings);
    }
    

    .

    function jsonToStringConvertor(obj)
    {
    var re = JSON.stringify(obj);
    return re;
    }
    

    我可以从服务器接收消息并打印出来: enter image description here

    到目前为止很好。但是当我试图像这样解析回Json时

    JsonFormattedMessage = json.loads(message)[0]
    

    我得到了这个错误:

    ERROR:tornado.application:Uncaught exception in /
    Traceback (most recent call last):
      File "/usr/local/lib/python3.4/dist-packages/tornado/websocket.py", line 494, in _run_callback
        result = callback(*args, **kwargs)
      File "index.py", line 27, in on_message
        JsonFormattedMessage = json.loads(message)[0]
    KeyError: 0
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Wouter Coebergh    7 年前