【发布时间】:2014-06-28 23:02:54
【问题描述】:
我正在制作一个流式 API,它处理 RPC 样式调用以及从服务器到客户端的通知(不是 JSON-RPC 规范中的客户端到服务器的通知)。不幸的是,最后一部分排除了 JSON-RPC + 持久 HTTP。
API 基于 JSON 和 JSON-RPC 规范。
JSON - http://www.ietf.org/rfc/rfc4627.txt
JSON-RPC - http://www.jsonrpc.org/specification
典型的会话可能是:
-> Sending to server
<- Receiving from server
-> {'id': 0, 'method':'login','params':{'token':'secret'}}
<- {'id': 0, 'method':'login','result':0}
-> {'id': 1, 'method':'subscribe','params':{'symbol':'VOD.L'}}
<- {'id': 1, 'method':'subscribe','result':0}
...
<- {'method':'notifyPrice','params':{'symbol':'VOD.L', 'bid':10.1, 'ask':10.03}}
<- {'method':'notifyPrice','params':{'symbol':'VOD.L', 'bid':10.2, 'ask':10.03}}
上述消息,尤其是通知,可以按任何顺序出现在同一个数据包中。这两个规范似乎都没有包含消息分隔符的详细信息,这使得在不使用基于 SAX 的 JSON 解析器的情况下很难知道何时接收到完整的 JSON 消息,这与 DOM 对应物相比相当罕见。
我是否遗漏了一些明显的东西,还是真的没有标准方法来区分通过网络传入的多个 JSON 消息?
【问题讨论】:
标签: json network-programming sax json-rpc