3

我现在正在发现 Meteor DDP 协议,没有太多关于它的文档。

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

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

(键已更改)

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

4

1 回答 1

5

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

  • c代表封闭(关闭框架)
  • o当套接字打开时(打开框架)
  • a接收数据时(编码的 JSON 消息数组)/数据类型
  • h心跳,每分钟发送一次,以保持活力。

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

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

参考:

于 2014-01-09T19:48:32.130 回答