Open ReAlign opened 6 years ago
任何事物的演变,都是为了解决无法满足的需求,或者更好地满足需求。 ——沃·滋基·索德
一个都能看懂的日常:
😭,我该怎么办???
1、一趟一趟跑
C:有数据了没?(第 1 趟) S:没 C:有数据了没?(第 2 趟) S:没 ... C:(喘气.jpg)有数据了没?(第 n 趟) S:(黑脸.jpg)没~ ... C:(生无可恋.jpg)有数据了没?(第 n+m 趟) S:有了,给你给你
2、跑过去等一会儿,万一拿到了呢,少跑一趟是一趟
C:有数据了没?(第 1 趟) S:没 C:我等会吧,你快点 S:好 ... S:我们要打烊了,你先走吧,明天再来 C:(MMP.jpg)好吧 ... C:有数据了没?(第 n 趟) S:有了,给你给你
3、跑过去预定,天黑前,还有新数据的话,让伙计送过来吧
长连接Streaming:iframe/htmlfile/multi-part/Flash Socket 服务端发送事件EventSource:SSE(Server Sent Events)
长连接Streaming:iframe/htmlfile/multi-part/Flash Socket
服务端发送事件EventSource:SSE(Server Sent Events)
C:我预定下今天的数据。有数据没? S:没 C:好,天黑前,有新数据,让伙计送过来吧 S:(不情愿.jpg)行吧 ... S:有 数据1 了,伙计,送过去 ... S:有 数据n 了,伙计,噢,下班了呀。天都黑了,算了吧,等他再来吧
4、签个双向合同吧,你有数据随时给我,我有数据随时给你
C:我们的合同执行吧,麻烦有数据的时候,推记得给我噢。。 S:ok S:我这有数据给你 C:👌,我这也有数据给你 S:👌,给你 ...
这个演变过程,看着很像双方地位从不平等到平等的过程。
总结不太全,欢迎补充
未完待续。。。
以上
by ReAlign
WebSocket(1): 服务端“实时推送”的演变
引子
一个都能看懂的日常:
😭,我该怎么办???
演变过程
轮询(Polling)
C:有数据了没?(第 1 趟) S:没 C:有数据了没?(第 2 趟) S:没 ... C:(喘气.jpg)有数据了没?(第 n 趟) S:(黑脸.jpg)没~ ... C:(生无可恋.jpg)有数据了没?(第 n+m 趟) S:有了,给你给你
长轮询(Long-Polling)
C:有数据了没?(第 1 趟) S:没 C:我等会吧,你快点 S:好 ... S:我们要打烊了,你先走吧,明天再来 C:(MMP.jpg)好吧 ... C:有数据了没?(第 n 趟) S:有了,给你给你
长连接Streaming / 服务端发送事件EventSource
C:我预定下今天的数据。有数据没? S:没 C:好,天黑前,有新数据,让伙计送过来吧 S:(不情愿.jpg)行吧 ... S:有 数据1 了,伙计,送过去 ... S:有 数据n 了,伙计,噢,下班了呀。天都黑了,算了吧,等他再来吧
WebSocket
C:我们的合同执行吧,麻烦有数据的时候,推记得给我噢。。 S:ok S:我这有数据给你 C:👌,我这也有数据给你 S:👌,给你 ...
做个对比吧
Polling
2、很容易理解
3、实现无额外技术成本
4、 支持跨域
2、 一次请求信息大半是无用(完整http头信息)
3、 有延迟
4、大部分无效请求
Long-Polling
2、不会频繁发请求
3、节省流量
4、延迟低
2、维护多个线程
3、很容易占满TCP连接数
2、不发无用请求,一次链接,多次“推送”
2、无法准确知道连接状态
3、IE、FF 一直会处于loading状态
2、不发无用请求,一次链接,多次“推送”
2、非http协议,无法自动穿越防火墙
2、数据流
3、支持断线重连
2、还是单向
3、IE不支持
2、可发送二进制文件
2、不支持断开重连
未完待续。。。
以上
by ReAlign