4

我正在尝试为我的 Django 网站制作一个非常简单的 2 人聊天室。我正在学习 AJAX 来做到这一点。我需要部分网页在没有用户交互的情况下更新:

  • 当用户 1 发送消息时,它应该出现在用户 2 的屏幕上
  • 当用户 1 注销时,他的状态应在用户 2 的屏幕上更改为“离线”

实现这一点的最简单方法是什么?是否只是使用 JavaScript 定期轮询服务器?如果是这样,这样做的最佳做法是什么?我找到了一些关于使用 setInterval 或 setTimeout 的解决方案,但不确定这是否是最好的方法。

(我读过关于反向 AJAX 的文章,但从我读到的内容来看,这实现起来更复杂。我不需要我的解决方案快速或可扩展;我只需要它工作。)

4

3 回答 3

3

既然你说你不关心Comet,这当然不是很容易上手,那么 setInterval 就可以了。不过,你想对它聪明一点。您可能应该以 30 秒的间隔开始。如果用户开始聊天,你的时间间隔应该下降到 5。随着你注意到越来越少的动作,你的计时器应该再次下降到 30 秒,依此类推。它不会在可扩展性大会上赢得任何奖项,但它会为您的普通中型网站完成。

有关此技术的更多信息,请查看此相关问题

于 2009-05-17T00:48:55.713 回答
2

利用Orbited。乍一看很容易让你的眼睛呆滞,开始抱怨太复杂了,但一旦你通过了它,你就会明白什么是“最佳实践”,以及为什么它既快速又可扩展。

您还会发现自己意识到这是一项出色的技术,可用于许多动态网页行为。

于 2009-05-17T00:49:34.653 回答
0

另一种半途而废的选择是WebSync On-Demand(或任何其他托管彗星服务......不确定是否还有其他)。它可以让您实现服务器推送功能,但使用起来很简单,因为您需要做的就是包含 javascript 客户端。

于 2010-02-11T19:39:59.313 回答