GCM,我怎么知道XMPP数据包的结束?

时间:2015-02-27 21:48:43

标签: python sockets xmpp google-cloud-messaging

我正在用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)

1 个答案:

答案 0 :(得分:2)

XMPP不使用框架,因此没有标头。您需要使用流式传输(例如SAX)XML解析器(例如expat)来解析XML流。可以通过跟踪解析器树的深度来确定XMPP等效的“数据包”。

但是,如果您是XMPP新手,我强烈建议您使用库,而不是尝试从头开始正确地编写所有这些。

你正在使用Python。一个很好的库是SleekXMPP,它也是XMPP: The Definitive Guide书中用于代码示例的库。

更多信息: