长期投票混乱
我一直在学习长时间轮询,并在阅读了一些内容后发现自己有点困惑。 我看了这里和这里的解释
我不太明白在响应之前让服务器进入睡眠状态的重点。 我知道这个想法是试图保持客户端和服务器之间的连接,但是在第二个链接中有最高的优先php示例,它有一个代码片段,服务器只是在一段时间内调用睡眠。
<?php
/* Send a string after a random number of seconds (2-10) */
sleep(rand(2,10));
echo("Hi! Have a random number: " . rand(1,10));
?>
睡眠究竟完成了什么? 这不仅仅是为了让你每次发送请求时,它都会首先进入睡眠状态(让服务器什么都不做),然后做出响应,使其完全像一个标准的http请求,但速度更慢? 如果睡眠只是让服务器在一段时间内不做任何事情,我看不出如何维持连接。 每当接收到新信息时,是否需要长时间轮询来回应客户?
长轮询是关于服务器没有响应,直到新数据准备好返回给客户端(不是在固定的持续时间内休眠)。
假设您需要从服务中获取新的信息。 您的(轮询)选项包括: 常规轮询客户端以固定的时间间隔发送请求并请求新的信息。 这很容易实现(并发连接的数量可能很容易),但这意味着1)您需要调整用例的间隔时间(准备就绪后需要多久),2)您需要等待数据的最大值(RTT +延迟间隔),3)发生大量握手
长轮询客户端发送请求并等待单个响应。 服务器线程将休眠,并在数据可用时通知它,此时它将作为响应的一部分返回它们。 这意味着客户可用后将在RTT / 2时间内获得数据。 但服务器需要保持更多的并发连接。
链接地址: http://www.djcxy.com/p/52621.html