我一直在学习长时间的民意调查,在阅读了一些关于它的信息后,发现自己有点困惑。我查看了解释here和here
我不太明白在响应之前使服务器睡眠的重点是什么。我知道这个想法是尝试在客户端和服务器之间保持连接打开,但是在第二个链接中有最高的upvoted php示例,它有一个代码片段,服务器只是在一段时间内调用sleep。
{{1}}
睡眠到底完成了什么?并不是这样做,以便每次发送请求时,它只会先睡觉(让服务器什么都不做),然后响应,使它完全像标准的http请求但速度要慢得多?如果睡眠只是让服务器在一段时间内不做任何事情,我就不会看到如何维持连接。每当收到新信息时,长时间轮询是否都无法响应客户?
答案 0 :(得分:0)
长轮询是关于服务器没有响应,直到新数据准备好返回到客户端(没有在固定的持续时间内休眠)。
假设您需要从服务中获取新信息。您的(民意调查)选择是: 定期轮询客户端以固定间隔发送请求并请求新信息。这很容易实现(并且可能很容易实现并发连接数),但这意味着1)您需要调整用例的时间间隔(在数据准备就绪后需要多长时间),2 )你需要等待最多(RTT +延迟间隔)数据,3)发生了大量的握手
长轮询客户端发送请求并等待单个响应。服务器线程将休眠,并在数据可用时通知,此时它将作为响应的一部分返回它们。这意味着客户端在可用后将在RTT / 2时间内获得数据。但是服务器需要保持更多的并发连接。