2010-02-24 127 views
0

我想让网站上的一位用户可以在我的Django网站上与另一位用户聊天。我希望被请求者得到一个实时框,并说:“你想聊天吗?”Django聊天请求的客户端轮询(反向AJAX)?

如何以下客户端轮询方法的声音:

上users2昵称USER1点击,生成一个POST请求一些/消息/请求,在数据库中创建类型CHAT_REQUEST的消息。同时,user2的浏览器中的一段Javascript代码重复查询服务器的消息更新。当它收到类型为CHAT_REQUEST的消息时,它会打开一个弹出窗口...

此方法的问题似乎是数据库访问。

如果客户端每10秒轮询一次,并有100个用户保持打开浏览器窗口,那么每秒钟有10个数据库请求。

将这些消息不存储在数据库中,而是存储在Django的RAM或会话信息中会更好吗?或者将这个数据库表用PostgreSQL缓存在RAM中,并且检索速度很快?

+1

想一想为此使用消息队列。 – 2010-02-24 21:25:47

回答

2

如上所述,数据库表会为您的服务器加载负载,但如果您想要因任何原因保留这些请求的记录可能会有用。

使用像memcached或AMQP服务器可能会给你更好的性能。如果你喜欢,你甚至可以使用更高性能的重要价值商店,如东京内阁/东京暴君。

0

如果您担心服务器性能和带宽使用情况,我建议您寻找“COMET like”通信而不是“AJAX like”。

顺便说一句,REDIS看起来非常适合处理那种内存数据结构。