Max*_*ber 34 real-time long-polling websocket server-sent-events
Google云端硬盘使用什么技术进行实时操作?
当我输入多个用户正在访问的Google云端硬盘文档时,Chrome开发者工具网络标签显示没有WebSockets.
我看到两种最常见的AJAX调用类型都有"绑定"?还是"保存?" 在URL中."保存?" 每次输入时都会发出POST请求,这对于向服务器发送更新很有意义.
当另一个用户输入时,最近的"绑定?" GET呼叫保持打开状态,通过该连接传输的数据量也会增加.周期性地,"绑定?"被关闭,新的打开,逻辑似乎是持续时间和数据大小的一些功能.
这不是长轮询,因为当服务器发送更新时,它不会完成响应.
这似乎不是服务器发送的事件,因为内容类型是"text/plain"而不是"text/stream".
Google正在做什么名称?如果是这样,我该如何尝试实现呢?
Max*_*ber 46
直到现在它还没有名字.我将其称为"无轮询",与民意调查和长期民意调查形成鲜明对比.
通过轮询,客户端会定期发送新数据查询.
通过长轮询,客户端查询数据,服务器保留请求,在有更新时结束响应和更新.
无轮询(Google Drive的功能)利用浏览器在请求完成之前如何从请求正文中读取数据.因此,当协作者进行更多的键入和编辑时,服务器会将更多数据附加到当前请求.如果满足某些限制(内容的长度或请求的持续时间),则请求完成,并且客户端向服务器发起新请求.
让客户端向服务器发送更新:这可以通过普通的POST来完成.
让客户端从服务器订阅更新:
客户端发送更新流的GET,然后在响应完成之前开始读取响应主体.
XHR对象可以
progress
在请求完成之前发出事件.(部分)响应可以使用xhr.responseText
.~~有没有简单的方法来进步与手表fetch
尚未(2016月).~~当使用fetch
一个可以通过观看进度消耗res.body ReadableStream.
当前请求结束时,客户端应发起新请求.
服务器必须:
在我看来,非民意调查似乎优于长期民意调查,尽管我没有多玩过.长轮询强制延迟和消息大小之间的权衡(给定恒定的更新速率),不必进行权衡无轮询.长轮询的另一个缺点是它可能导致许多HTTP请求,每次都支付HTTP的开销.
No-polling相对于WebSockets的一大优势是每个浏览器都支持不轮询,尽管WebSocket支持非常好 - IE10 +.
小智 6
这里描述的无轮询听起来像“服务器发送事件 - SSE”,其中客户端发送一个以“text/event-stream”作为内容类型的 http get 请求。服务器保留请求并在需要时向客户端发送响应。它是持久性的,但与 web-socket 不同,因为 web-socket 它是两种方式通信,但 SSE 是一种方式(只有服务器向客户端发送有效负载/消息)
归档时间: |
|
查看次数: |
5176 次 |
最近记录: |