連接到具有XMPPPY XMPP服務器很簡單。如何斷開我XMPPPY客戶對象
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()
但是,有時候我的客戶必須強制斷開連接,但仍然繼續做其他事情。我想確保客戶端正確斷開 - 套接字不是「閒置」的,服務器資源不會被浪費。
是預期模式給客戶只需設置爲無,讓GC清理對象?
self.xmppClient = None
我在客戶端看到「斷開的處理程序」,但我看不到如何調用它們。 XMPPPY附帶的文檔非常糟糕。
任何人有任何的「正道」任何線索斷開?
你絕對可以發送一個無法存在,而我這樣做。但是,這並不會斷開你的客戶端(和套接字),正如你所暗示的那樣。你確實需要從服務器端正常斷開,這是我真正的問題。我會期望一個推論xmpp.Client.Client.connect()(如disconnect()?),但沒有一個。 – 2010-10-01 15:01:41
@大衛 - 對不起,我誤解了你的問題。不幸的是,我不熟悉XMPPY客戶端。我做了一些Google,這是我爲斷開連接方法發現的最接近的東西:http://xmpppy.sourceforge.net/examples/xsend.py在腳本中,作者特意註釋掉了一個client.disconnect()呼叫。此外,如果你看看這個庫的基本教程(http://xmpppy.sourceforge.net/basic.html),作者指出它只是離開了Python和TCP/IP層的連接......它是一個「 as-design「,庫的作者不提供斷開連接方法? – DashK 2010-10-01 18:01:46