1

我有一个内部服务器 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>

我不知道为什么这个请求不起作用。

4

0 回答 0