使用 XMPPPY 连接到 XMPP 服务器非常简单。
from xmpp.client import Client as XMPPClient
self.xmppClient = XMPPClient("jabber.foo.com")
if not self.xmppClient.connect(server="localhost"):
raise IOError('Cannot connect to server.')
if not self.xmppClient.auth("node", "password", "resource"):
raise IOError('Can not auth with server.')
self.xmppClient.RegisterHandler("message", self.messageHandler)
self.xmppClient.sendInitPresence()
然而,有时我的客户不得不强制断开连接,但仍继续做其他事情。我想确保客户端正确断开连接 - 套接字没有“闲置”并且服务器资源没有被浪费。
预期的模式是否只是将客户端设置为 None 并让 GC 清理对象?
self.xmppClient = None
我在客户端中看到“断开连接的处理程序”,但我不知道如何调用它们。 XMPPPY 附带的文档非常糟糕。
有人知道断开连接的“正确方法”吗?
一般来说,如果您想断开与 XMPP 服务器的连接,您将发送一个 type='unavailable' 的 Presence 节,如下所示:
<presence type='unavailable' />
请注意,Presence 没有收件人地址。这是一个link http://xmpp.org/rfcs/rfc3921.html#presence如果您想了解更多信息,请参阅 XMPP 的 RFC。 (第 5.1.5 节)
之后,您可以优雅地断开与服务器的连接,因为您发送的存在基本上告诉服务器“我出去了”。
我查看了 XMPPPY 文档(是的,我同意它还有改进的空间),似乎 xmpp.Client.Client 包含一个函数调用 sendPresence(...)。您可以使用该功能发送不可用状态吗?
这是 API 文档:http://xmpppy.sourceforge.net/apidocs/xmpp.client.Client-class.html#sendPresence http://xmpppy.sourceforge.net/apidocs/xmpp.client.Client-class.html#sendPresence
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)