使用模式创建缓冲区并通过Javascript中的WebSockets发送缓冲区的有效方法?

时间:2016-07-09 16:19:32

标签: javascript json node.js websocket protocol-buffers

我正在编写一个浏览器游戏,正在寻找一种向node.js服务器发送原始数组缓冲区的方法。

我不喜欢在JSON上发送WebSockets字符串的想法,因为:

  1. 当接收者已经知道格式
  2. 时,我必须指定密钥
  3. 如果发送格式错误的结构(不是必需的话),则无法验证或检查
  4. 将JSON字符串解析为对象本身比读取二进制文件慢
  5. 整个有效负载的浪费带宽是一个字符串(例如,而不是打包的内容)
  6. 理想情况下,我可以为每种消息类型设置一个模式,构造该消息,并将其原始数组缓冲区发送到服务器。像这样:

    schema PlayerAttack {
      required int32 damage;
      required int16[] coords;
      required string name;
    }
    
    var message = new PlayerAttack(5, [24, 32], "John");
    websockets.send(message.arrayBuffer());
    

    然后它将作为缓冲区到达Node.js服务器,并选择解码到对象。

    谷歌的Protocol Buffers几乎适合这种用例,但速度太慢而且开销太大(比基准测试的JSON.parse慢7倍,并且包含我没用的标记等功能)。

0 个答案:

没有答案