>假设我有一个服务器支持客户端长轮询。那么我的客户端代码是这样的:
var polling = function() {
$.ajax({
url: "/polling"
}).done(function(data) {
// polling again
polling();
// process the pushed data
...
});
}
polling();
当我想在客户端不断轮询"/polling"时将某些内容推送到客户端时,这应该有效。
但是,您可能会注意到,客户端接收到推送的数据与下一次轮询到达服务器之间存在"时间间隔"。 此"时间间隔"中的数据将丢失。
有多种服务器端解决方法可以避免此问题。但是我想知道客户端是否有任何解决方法?如:* 客户端能否保持长轮询请求始终连接?我发现Gmail应该做一些这样的技巧。我在 GTALK 中聊天,但没有看到"/bind"请求中断。* AJAX 在传输时应该接收不完整的数据吗?然后连接可以永久连接。* Websocket 应该工作吗?如果是这样,没有HTML5我能做什么?
你可能想考虑像 Pusher 这样的东西,它会让你在处理这些事情时的生活更轻松(因为它们给你一个库来处理所有这些在一个很好的包中)。