所以我已经建立了一个网站,我需要一个comet服务器的聊天应用程序。这个网站是用twisted.web构建的,我想用twisted构建comet服务器,因为我已经对它有点熟悉了。
但我不知道怎么做。我看过 this post
我的想法是,把它作为一个单独的进程运行,然后在另一个进程上运行我的twisted站点。twisted站点中的页面将有一个对comet服务器的ajax调用,该调用将等待响应。但是这个响应会像页面加载一样需要很长时间才能返回吗?
comet服务器如何最好地从网站服务器获取数据?它不会只是轮询网站,或者我也可能没有comet服务器——我会在comet服务器的GET处理程序中放入一个无限循环,让网站调用它并中断吗?comet服务器和网站如何共享数据?比如,comet服务器如何知道用户的会话数据——他们是谁,他们在等待什么,它可以向他们发送什么?
另外,我不确定这一点,但我是否必须将线程合并到comet服务器中,或者它已经是多线程的了?
您可以使用Orbited(这是一个基于Twisted的comet服务器),并在与web服务器相同的进程中运行它。它很光滑。与其使用它的内置代理,不如直接使用它的内脏。你可以这样做:
from orbited.cometsession import Port ... reactor.listenWith(Port, factory=someFactoryYouWrote, resource=someResourceYouWrote, childName='tcp')