如何在Python中从websocket消息中增量解析JSON



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

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

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

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

它是建立在TCP之上的,但在将单个片段传递到应用层(您的代码)之前,它会自动处理将其拼接成一个完整的消息。

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

同样来自官方RFC:

在TCP之上分层一个成帧机制,以返回TCP所建立的IP数据包机制,但没有长度限制

相关内容

  • 没有找到相关文章

最新更新