龙卷风-如何实现长轮询客户端

sec*_*rve 3 python comet tornado long-polling

我正在尝试在Tornado中实现与远程Tornado服务器交互的长拉客户端。

发生的事情是两件事之一:

  1. 客户端超时,或者
  2. 客户端在完成整个后台过程后立即接收所有消息,类似于阻止消息

这是我使用的客户端:

from tornado import ioloop
from tornado import httpclient

print "\nNon-Blocking AsyncHTTPClient"
import tornado.ioloop

def async_call(response):
        if response.error:
                response.rethrow()
        print "AsyncHTTPClient Response"
        ioloop.IOLoop.instance().stop()

http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://localhost:9999/text/", async_call)
ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

这是编写长轮询/ comet客户端的正确方法吗?

对于那些愿意在Tornado中提供一个示例异步服务器的人,我也将不胜感激,因为可能是我在错误地编写了彗星的Tornado服务器……对于整个长轮询过程来说,我有点陌生。

cle*_*leg 6

龙卷风本身就是一个很好的聊天示例,它建立在长轮询机制之上

https://github.com/facebook/tornado/tree/master/demos/chat

它对我的所有知识都有很大帮助,它同时具有服务器和客户端。

  • 谢谢克莱格的回答。您提供的示例仅使用Tornado实现服务器端,而客户端使用javascript。我也希望客户端以Tornado而不是JavaScript编写,从而符合长期轮询/彗星服务器实现。 (2认同)
  • 好吧,来自龙卷风的异步轮询也非常简单。只需在IOLoop中使用Tornado的AsyncHTTPRequest。我已经从我的项目中剪切了示例:https://gist.github.com/4370563 (2认同)