我正在用Python实现Google Cloud Messaging XMPP服务器。我可以连接并验证GCM,但我使用的self.ssl_sock.recv(1024)
不好,但适用于身份验证。
然而,当我后来想要从GCM接收消息时,我在套接字上读取,但是我读了多少字节?我在xmpp文档中找不到任何关于某种报头/数据长度的标题。
def read_from_socket(self):
data = self.ssl_sock.recv(??)
self.handle_message(data)
答案 0 :(得分:2)
XMPP不使用框架,因此没有标头。您需要使用流式传输(例如SAX)XML解析器(例如expat)来解析XML流。可以通过跟踪解析器树的深度来确定XMPP等效的“数据包”。
但是,如果您是XMPP新手,我强烈建议您使用库,而不是尝试从头开始正确地编写所有这些。
你正在使用Python。一个很好的库是SleekXMPP,它也是XMPP: The Definitive Guide书中用于代码示例的库。
更多信息: