为网页实现“服务器推送”式行为的最简单方法是什么?

时间:2009-05-17 00:28:16

标签: javascript ajax comet reverse-ajax

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

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

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

(我已经阅读过关于反向AJAX的内容,但是根据我的阅读,这实现起来更复杂。我不需要我的解决方案快速或可扩展;我只是需要它才能工作。)

3 个答案:

答案 0 :(得分:3)

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

有关此技术的更多信息,请check out this related question

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

另一个有点遇见你的选择是WebSync On-Demand(或任何其他托管的彗星服务......不确定是否有其他人)。它可以让你实现服务器推送功能,但是很容易上手,因为你需要做的就是包含javascript客户端。