如何从Python中的websocket消息逐步解析JSON?

时间:2016-01-03 04:32:14

标签: python json websocket

我有JSON消息(JSON哈希表)表示为通过websocket进入的字符串。从套接字读取的每个都可以返回不在消息边界上结束的字符串。什么是在Python中解析JSON消息的最简单方法?如何在不自己编写解析器(或大括号/ paren匹配器)的情况下找到消息终止的位置?

其他语言是否提供了使这更容易的工具?

1 个答案:

答案 0 :(得分:0)

  

套接字的每次读取都可能返回一个不以消息边界结束的字符串。

这是不正确的 - Websockets是面向消息的协议,而不是传统的面向流的TCP套接字协议,您需要担心并处理消息分块。

它构建在TCP之上,但是在应用层(您的代码)交付之前,它会自动处理将各个片段拼接到one complete message

  

因此,websockets是面向消息的,就像UDP一样,没有最大长度限制,但具有TCP的传递保证和拥塞控制。事实证明,TCP的流方向并不是那么有用(想想有多少协议在TCP之上构建某种“消息”概念)。事实上,SCTP(RFC 4960)提供了许多与TCP顶层消息相同的优点,但删除了TCP部分以减少开销。不幸的是,SCTP尚未得到广泛采用。

同样来自official RFC

  

将TCP上的成帧机制分层,以返回构建TCP的IP数据包机制,但没有长度限制