Ajax Long Polling

时间:2012-02-01 21:16:56

标签: jquery ajax long-polling

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

这是我的基本功能:

    <script language='javascript' type='text/javascript'>
    var interval=self.setInterval("checkformessages()",4000)
    function checkformessages() {
    $('#incomingmessages<?php echo $otherchatuser ?>').load('checkfornewmessages.php?username=<?php echo $username; ?>&otherchatuser=<?php echo $otherchatuser; ?>');
    }
    </script>

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

1 个答案:

答案 0 :(得分:6)

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

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

换句话说,对于长轮询工作,有趣的事情可能在您的checkfornewmessages.php页面的服务器端完成。除了联系checkfornewmessages.php之外,您的javascript代码无需执行任何操作,并等待其回复。