如何使用长轮询(最好没有Comet或node.js)?

时间:2011-08-05 15:14:15

标签: php javascript comet

假设我正在同步HTML页面上的文本,存储在localStorage中,从计算机A到计算机B.当用户编辑计算机A上的文本时,我向服务器发送请求,并告诉它更改了哪些文本。有什么方法可以让服务器告诉计算机B有新文本,没有计算机B必须继续检查?我读过有关Comet的内容,但我正在尝试不使用任何库。有办法吗?另外,如果你要建议Comet,你能用简单的JavaScript和Comet给出一个简单的例子吗?

我有一个想法,但我不知道它是否有效。在计算机B上,我发送一次请求,让服务器的文件继续延迟响应,直到有一些新文本。这样,它就像长轮询,但请求最终会超时。如果有一种方法可以将超时设置为永远,那么这将变得更加容易。那么,任何人都有任何想法吗?

P.S.-我想只使用JavaScript和PHP,并尝试避免使用库。不过,如果您知道可以使用JS和PHP执行此操作的库,请告诉我。

另外,我知道有这样的问题,但我发现的答案并不令人满意。

哦,如果有人知道这里的聊天是如何运作的,你能告诉我那个吗?

tl; dr:我想从服务器向HTML页面发送请求,或者让HTML发送一个请求,该请求将保持活动状态,直到创建出适当的响应。

1 个答案:

答案 0 :(得分:2)

Comet是长轮询的实现。

问题是主机需要为所有打开的请求保留所有可用资源。必须仔细配置服务器,以便在负载下顺利运行。这不是一个“开箱即用”的解决方案。

另一个缺点是每个用户必须绑定到特定的服务器 - 因此没有简单的方法来对请求进行负载平衡。

坚持定期轮询通常是最好的选择。