我最近在StackOverflow上询问了一个有关我的函数的问题,人们建议我使用Ajax长轮询。我花了过去几天的时间研究这个主题,并尝试编写基本的长轮询代码,但是没有任何一个代码能够工作,我无法让任何事情都起作用。
以下是我的基本函数:
以下是我的基本函数:
<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>
请问有人能告诉我如何将这个函数变成基本的长轮询函数,甚至只是指引我到达那里的路径。非常感谢任何帮助。谢谢!
load
的调用会联系到checkfornewmessages.php
,然后停止并等待checkfornewmessages.php
返回新消息。checkfornewmessages.php
不会返回,直到有人说了什么。这可能需要很长时间,因此术语为长轮询。当有人说话时,服务器立即返回。 - Jack EdmondsChatRoom
类并将其放置在所有成员的会话中。 ChatRoom 将具有某种阻塞队列。checkfornewmessages.php
将尝试从队列中拉取消息,这将阻止请求返回,直到有可用的消息。 然后另一个页面sendmessage.php
或其他什么东西将在队列上放置一些内容,这将立即解除所有checkfornewmessages.php
请求的阻塞。 - Jack Edmonds