我有一个内部服务器 xmpp (openFire),我开发了一个实习生聊天客户端。
我为此使用 xmpppy 和 pyqt,但我在服务器/客户端对话方面遇到了一些问题。
我想试试,有一个处理程序来获取聊天的版本。
处理程序:
self._client.registerHandler("iq", self.handleVersion, typ = "get", ns = xmpp.NS_VERSION)
def handleVersion(self):
print "do stuff"
如果我使用另一个聊天客户端并询问版本,则此处理程序有效。(即,Spark 2.6.3)
Spark发送的询问版本的iq对象是:
<iq xmlns="jabber:client" to="myUserName@myServer/519c3e1e" type="get" id="reLOy-26" from="contactName@myServer/Spark 2.6.3"><query xmlns="jabber:iq:version" /></iq>
但是,如果我尝试对我的聊天客户端执行相同的 iq 对象,它就不起作用(他没有输入 def handleVersion(self):
当我创建自己的请求时:
reply = xmpp.protocol.Iq(to="uga@chob04", typ="get", frm="phid@chob04", xmlns ="jabber:client") #,
reply.setQueryNS(xmpp.NS_VERSION)
self._client.send(reply)
我发送前的 Iq 对象是:
<iq xmlns="jabber:client" to="myUserName@myServer" from="contactName@myServer" type="get"><query xmlns="jabber:iq:version" /></iq>
发送后是:
<iq to="myUserName@myServer" from="contactName@myServer" id="9" type="get"><query xmlns="jabber:iq:version" /></iq>
我不知道为什么这个请求不起作用。