gpt4 book ai didi

python - 如何断开我的 XMPPPY 客户端对象

转载 作者:行者123 更新时间:2023-11-28 17:54:00 25 4
gpt4 key购买 nike

使用 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 服务器的连接,您将发送一个类型为“unavailable”的 Presence 节,如下所示:

<presence type='unavailable' />

请注意,Presence 没有收件人地址。这是一个 link如果您想了解更多信息,请访问 XMPP 的 RFC。 (第 5.1.5 节)

在那之后,您可以从容地断开与服务器的连接,因为您发送的存在基本上是在告诉服务器,“我出去了。”。

我查看了 XMPPPY 文档(是的,我同意它有改进的余地),似乎 xmpp.Client.Client 包含一个函数调用 sendPresence(...)。您也许可以使用该功能发送不可用状态?

这是 API 文档:http://xmpppy.sourceforge.net/apidocs/xmpp.client.Client-class.html#sendPresence

关于python - 如何断开我的 XMPPPY 客户端对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com