我最近读到了有关可用于 http 的长轮询概念。我想了解,是否有任何 http 协议标准本身支持长轮询概念,这样根据客户端如何配置 http 连接,服务器可以以短轮询方式或长轮询方式运行,因此实际上一些客户端可以以短轮询模式连接,而一些客户端可以以长轮询模式连接。
任何示例代码,尤其是 Java 代码,都会有帮助。
答案1
长轮询意味着请求的响应不会立即发送,只有当响应可用时才会发送。HTTP 作为协议,对于响应生成所需的时间没有要求。
客户端决定发出 HTTP 请求后愿意等待服务器响应多长时间。
类似地,HTTP 服务器可以在 HTTP 请求发送后随时自由地发送响应。
例如:
客户端发送 HTTP 请求,并等待 5 分钟的响应。如果 5 分钟内未收到响应,则请求超时。在长轮询场景中,客户端会发送另一个 HTTP 请求,依此类推。
分别在服务器端,请求处理循环读取 HTTP 请求,然后等待某个实体生成响应负载,然后将其发送回客户端。
客户端无法控制服务器如何运行。客户端上没有“长轮询请求”这一具体概念。
只有 HTTP 请求,服务器决定何时发送答案,客户端决定愿意等待多长时间。
答案2
不存在这样的事情长轮询在 HTTP 中。长轮询是一种巧妙(滥用)使用HTTP 的一个特性。
由于 HTTP 对长轮询一无所知,因此无法有标准的方法来检查是否支持。