Atmosphere using x-websocket



我试图从外部获得一些数据(因此我不知道它是如何配置的)使用Atmosphere的websocket API (https://github.com/Atmosphere/atmosphere-javascript)。我使用x-websocket聚合物元素来管理我的请求(https://github.com/elierotenberg/x-websocket)。

这是我得到的响应我的请求的数据:

593|{{date.day.name =星期五;日期。day = 8;date.month.name =八月;日期。month = 8;日期。年份等于2014;日期。dow = 6;时间。hour = 15;时间。分钟等于18;时间。second = 48;时间等于151848;日期= 20140808;sender = Light;对象。EnvObject.ElectricDevice.Light;object.name =厨房灯;对象。protocol =未知;对象。地址=未知;对象。uuid = 21969e70-7e00-4a0d-a13f-a4728240d9d0对象。currentRepresentation = 0;object.behavior.brightness = 0;object.behavior.powered EQUALS false}}

有人知道如何在js中反序列化它或如何将其解析为JSON对象吗?

否则,你知道Atmosphere有什么问题吗?(我可以要求API所有者配置它不同)

我仍然不知道响应类型,但最终我解析了内容,下面是代码:

<script>
 Polymer({
  onMessage: function(event){
    var data = event.detail.data;
    data = data.split("|").pop();
    data = this.parse(data);
    this.fire("message", { data: data });
  },
  parse: function(input){
    var statements = input.substring(2, input.length -2).split("; ");
    var output = {};
    for (var i = 0; i < statements.length; i++) {
      var statement = statements[i].split(" EQUALS ");
      var leftSide = statement[0].split(".");
      var rightSide = statement[1];
      this._assign(output, leftSide, rightSide);
    }
    var data = JSON.stringify(output);
    return JSON.parse(data);
  },
  _assign: function(obj, keyPath, value){
     var lastKeyIndex = keyPath.length-1;
     for (var i = 0; i < lastKeyIndex; ++i) {
       key = keyPath[i];
       if (!(key in obj)){
         obj[key] = {};
       }
       obj = obj[key];
     }
     obj[keyPath[lastKeyIndex]] = value;
  }
});

相关内容

  • 没有找到相关文章