Ajax Long Polling

我最近在StackOverflow上问了一个关于我的函数的问题,人们建议我使用Ajax Long Polling。 我花了几天时间研究这个主题,并尝试编写基本的长轮询代码,但没有一个有效,我根本无法完成任何工作。

这是我的基本function:

 var interval=self.setInterval("checkformessages()",4000) function checkformessages() { $('#incomingmessages').load('checkfornewmessages.php?username=&otherchatuser='); }  

有人能够告诉我如何将其转换为基本的长轮询function,或者甚至直接指向我需要到达的路径。 很感谢任何forms的帮助。 谢谢!

通常(即不使用长轮询时),您的JavaScript代码将向您的服务器发出请求,您的服务器将立即返回信息。 但是,您的服务器可能并不总是有重要的事情要立即说出来。 在你的例子中(这似乎是一个聊天),当你提出checkfornewmessages.php的请求时,你正在聊天的人可能没有说什么。 因此,当您的JavaScript客户端询问服务器所说的内容时,服务器确实没有任何回应,除了“没有说什么”。

使用长轮询而不是checkfornewmessages.php立即返回“没有说过”,你只是不会从checkfornewmessages.php返回,直到有重要的东西返回。

换句话说,对于长轮询工作,有趣的东西可以在服务器端完成,可能在checkfornewmessages.php页面中。 除了联系checkfornewmessages.php之外,您的javascript代码不必执行任何操作并等待其响应。