我最近在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>
有人能够告诉我如何将其转变为基本的长轮询功能,或者甚至直接指向我需要到达的路径。很感谢任何形式的帮助。谢谢!
通常(即,当不使用长时间轮询时),您的JavaScript代码将向您的服务器发出请求,并且服务器将立即返回信息。但是,您的服务器可能并不总是需要立即说些重要的事情。在您的示例(似乎是聊天)中,当您向发出请求时,与您聊天的人可能没有说话checkfornewmessages.php。因此,当您的JavaScript客户端询问服务器所说的内容时,服务器实际上除了“什么都没说”之外没有其他响应。
checkfornewmessages.php
对于长时间轮询,而不是checkfornewmessages.php立即返回“什么也没说”,您根本不会从中返回,checkfornewmessages.php直到有重要的事情要返回时为止。
换句话说,为了使长时间的轮询工作正常进行,有趣的事情可能是在您checkfornewmessages.php页面的服务器端完成的。您的javascript代码除了联系checkfornewmessages.php并等待其响应外,无需执行任何其他操作。