龙卷风web应用程序中的Python xmpp jabber客户端

时间:2012-06-16 12:08:04

标签: python xmpp tornado

我是桌面程序员,但我想学习一些有关Web服务的知识。我决定使用python。我正在尝试了解Web应用程序的工作原理。我知道如何创建基本龙卷风网站(请求 - 响应)和工作jabber客户端,但我不知道如何混合它们。我可以在Web服务中使用任何python组件吗?它们是否必须具有特定结构(同步或异步)?因为我陷入了循环处理程序:

如果龙卷风通过命令启动web serwer:

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

...那么我在哪里(哪里)可以启动xmpp循环?

client.connect()
client.run()

我认为龙卷风听循环应该处理xmpp听力,但不知道如何

问候。

编辑:我忘记了。我正在使用pyxmpp2

2 个答案:

答案 0 :(得分:0)

我相信你想要实现的目标在python的一个线程中是不可行的,因为两者都试图在同一时间监听,这在一个线程中是不可能的。我可能会建议查看有关线程的this教程。

另一个问题是你想要制作一个基于网络的xmpp,或者只是拥有一个xmpp& html服务器在同一个脚本中运行。如果你想尝试前者,我会建议你研究zeromqqueue

之间的线程间沟通。

答案 1 :(得分:0)

也许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()