我应该如何在Django应用中实现反向AJAX?

6 投票
3 回答
2485 浏览
提问于 2025-04-15 22:39

我在用Django构建聊天应用时,应该怎么实现反向AJAX呢?我看过Django-Orbited,根据我的理解,它是在HTTP服务器前面放了一个comet服务器。如果我只是运行Django的开发服务器,这样做似乎没问题,但当我开始用mod_wsgi运行应用时,这样做是怎么工作的呢?让orbited服务器处理每个请求,这样的方式能扩展吗?这样做是对的吗?

我还看过另一种方法(长轮询),感觉也可以用,虽然我不太确定具体需要什么。客户端会请求一个页面,这个页面会在自己的线程中运行,以免阻塞其他应用吗?它会阻塞吗?客户端请求的脚本是不是得不停地去获取信息?

这几种方法中,哪种更合适?哪种更便携、可扩展、合理等等?还有没有其他好的方法(除了客户端轮询消息)我可能忽略了?

3 个回答

0

Nginx推送流模块为服务器和客户端提供了一个简单的HTTP接口。

Nginx HTTP推送模块也类似,但似乎已经不再维护了。

1

你有没有看过 Tornado 呢?

用 WSGI 来做 comet 或者长轮询的应用其实不是个好主意,因为它不支持非阻塞请求。

1

你觉得使用这个很棒的 nginx推送模块怎么样?

撰写回答