2011-12-30 66 views
0

我寫了一個關於與其他客戶端使用pyxmpp2聊天的演示,但是當客戶端空閒大約5分鐘時,服務器將與客戶端斷開連接,openfire無法配置超時,所以我決定在5分鐘內發送一個在線消息,令我費解的問題是何時發送prensense消息?處理客戶端與openfire服務器斷開連接如果客戶端空閒5分鐘

import pyxmpp2 

class EchoBot(EventHandler, XMPPFeatureHandler): 
    """Echo Bot implementation.""" 
    def __init__(self, my_jid, settings): 
     version_provider = VersionProvider(settings) 
     self.client = Client(my_jid, [self, version_provider], settings) 
    @event_handler(AuthorizedEvent) 
    def handle_authorized(self,event): 
     presence = Presence(to_jid ="....",stanza_type = "available") 
     self.client.stream.send(presence) 
    def run(self): 
     """Request client connection and start the main loop.""" 
     self.client.connect() 
     self.client.run() 
    def disconnect(self): 
     """""" 
     self.client.disconnect() 
    def keepconnect(self): 
     presence = Presence(to_jid ="....",stanza_type = "available") 
     self.client.stream.send(presence) 
     print "send presence" 
.... 
bot = McloudBot(JID(mcloudbotJID), settings) 
try: 
     bot.run()   
     t = threading.Thread(target=bot.run()) 
     timer=threading.Timer(5,bot.keepconnect()) 
     t.start() 
     timer.start() 
except KeyboardInterrupt: 
     bot.disconnect() 

但似乎沒有工作...

回答

0

退房

http://community.igniterealtime.org/docs/DOC-2053

這方面的細節在該dissconnect閒置的房屋,你可以設置爲毫秒的

在基於會話的通信中,斷開閒置客戶端是非常重要的。它與客戶意外關閉有關,而不僅僅是閒置。

如上所述,您可以在客戶端中實施ping或心跳包發送。也許可以查看空白IQ請求的pidgin實現。

希望這可以幫助你朝正確的方向發展。

詹姆斯

相關問題