我现在正在发现 Meteor DDP 协议(protocol),关于它的文档并不多。

我发现 Meteor 服务器在每个消息块前面发送一个字符(为什么像字符串一样发送,你知道为什么吗?),像这样:

c[2010,"Another connection still open"]
o
a["{\"server_id\":\"0\"}","{\"msg\":\"connected\",\"session\":\"BFWEff4389fjHFure\"}"]
a["{\"msg\":\"ready\",\"subs\":[\"fefjuihYFrvnuKOEF\"]}"]

(键已更改)

预先设置这个字符的目的是什么?我在哪里可以阅读更多关于它和低级 DDP 规范的信息?我是否保证(至少对于 pre1 版本)所有消息都以字符串编码,并且这些字符串连接到数组中,并且每个这样的数组前面都有一个自定义字符?

最佳答案

我认为这些字符不是由meteor 添加的,而是由sockjs 放入的,Meteor 用于构建DDP 的websockets 的模块。

  • c 代表关闭(关闭框架)
  • o 当套接字已打开(打开帧)
  • 收到数据时的 a(编码的 JSON 消息数组)/数据类型
  • h 心跳,每分钟发送一次,作为保持事件状态。

  • DDP 不需要这些。如果您发送它们,它们将被忽略。

    您可以在 node-ddp-client 等使用 faye-websockets 的项目中查看更多没有 sockjs 的低级操作,因此它更原始一些。数据也可以在原始字符串化 json 中发送。

    引用:
  • http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html
  • 关于Meteor DDP 服务器到客户端规范 : strange characters in the beginning,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21024265/

    10-12 00:03