簡體   English   中英

龍卷風Web應用程序中的Python XMPP Jabber客戶端

[英]Python xmpp jabber client in tornado web application

我是桌面程序員,但是我想學習一些有關Web服務的知識。 我決定使用python。 我正在嘗試了解Web應用程序的工作方式。 我知道如何創建基本的龍卷風網站(請求-響應)和工作的jabber客戶端,但是我不知道如何混合它們。 我可以在Web服務中使用任何python組件嗎? 它們是否必須具有特定的結構(sync或async)? 因為我陷入了循環處理程序中:

如果龍卷風通過命令啟動網絡服務:

app = Application()
app.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

...那么如何(在哪里)開始xmpp循環?

client.connect()
client.run()

我認為龍卷風監聽循環應該處理xmpp監聽,但不知道如何

問候。

編輯:我忘了。 我正在使用pyxmpp2

我相信您要完成的工作在python的一個線程中是不可行的,因為兩者都試圖同時監聽,而在一個線程中是不可能的。 我建議您看一下教程中的線程。

另一個問題是您要制作基於Web的xmpp還是只是在同一腳本中運行xmpp和html服務器。 如果您想嘗試使用前者,我建議您使用zeromqqueue進行線程間通信。

也許WebSocketHandler和Thread會為您提供幫助。

演示版

class BotThread(threading.Thread):

    def __init__(self,my_jid,settings,on_message):
        super(BotThread,self).__init__()
        #EchoBot is pyxmpp2's Client
        self.bot = EchoBot(my_jid, settings,on_message= on_message)

    def run(self):
        self.bot.run()


class ChatSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self): 
        #init xmpp client
        my_jid = 
        settings = 
        bot =BotThread(my_jid, settings,on_message=self.on_message)
        bot.start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM