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

3
我正在尝试在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()

这是编写长轮询/彗星客户端的正确方式吗?

如果有人能提供Tornado中的异步服务器示例,我会非常感激,因为也许我正在错误地编写Tornado彗星服务器...总的来说,我对整个长轮询过程还比较陌生。

1个回答

6

2
感谢cleg的回答。 你提供的示例只有基于Tornado的服务器端实现,而客户端是使用javascript编写的。 我希望客户端也使用Tornado编写,并且符合long-polling/comet服务器的实现方式。 - securecurve
客户端将是一个桌面应用程序。 - securecurve
2
嗯,从Tornado进行异步轮询也非常简单。只需在IOLoop中使用Tornado的AsyncHTTPRequest即可。我从我的项目中剪切了一个示例:https://gist.github.com/4370563 - cleg
1
我非常感谢你的帮助,我的朋友。我已经开始做了,特别是你提供的链接,同时,我也会考虑你的其他建议和帮助:))。总之,我想说的是...圣诞快乐!!祝你好运连连!! - securecurve
1
只是想告诉你,我的朋友,我也开始研究Websockets了,这是一个比长轮询http更好的选择。 - securecurve
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接