如何在网页中实现类似“服务器推送”的行为最简单?

4
我正在尝试为我的Django网站制作一个非常简单的双人聊天室。我正在学习AJAX来实现这一目标。我需要网页的某些部分在用户不进行交互的情况下更新:
  • 当用户1发送消息时,它应该出现在用户2的屏幕上
  • 当用户1注销时,他的状态应该在用户2的屏幕上更改为“离线”
最简单的实现方法是什么?只需使用JavaScript定期轮询服务器吗?如果是这样,做到这一点的最佳实践是什么?我找到了一些关于使用setInterval或setTimeout的解决方案,但不确定这是否是最佳方式。
(我已经阅读了有关反向AJAX的文章,但据我所知,这更难以实现。我不需要我的解决方案快速或可扩展;我只需要它能够工作。)
3个回答

3

由于您说您不喜欢彗星,这确实不太容易启动,因此setInterval将起到作用。但是您需要聪明地使用它。您应该从30秒的间隔开始。如果用户开始聊天,则间隔时间应降至5秒。随着越来越少的活动,您的计时器应再次下降到30秒,依此类推。它不会在可扩展性大会上获得任何奖项,但对于普通中型网站来说,它将完成任务。

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


2
利用Orbited来发挥作用。乍一看,这可能会让您感到复杂,但是一旦您克服了这个问题,您就会明白什么是“最佳实践”,以及为什么它既快又可扩展。

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


谢谢 Joel,我会去查看的。 - RexE

0
另一个部分符合您需求的选择是WebSync On-Demand(或任何其他托管的彗星服务...不确定是否有其他服务)。它将允许您实现服务器推送功能,但很容易使用,因为您只需要包含JavaScript客户端即可。

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