当前位置:首页 > 每日看点 > 正文内容

可以用不关闭的 HTTP 连接,来替代 WebSocket 吗?

卡卷网8个月前 (12-27)每日看点116

刚好在过去的职业生涯里多次使用到了各种服务端推送技术。给大家介绍我常用的 3 种技术——websocket,sse,httpstream。

websocket:概念提出于 2008 年。次年草案,2010 年由苹果率先支持草案。2011 年标准化(RFC6455)。2012 年 api 标准化。

sse:概念提出得更早2006 年,但进度明显比 websocket 慢,标准化也是 2011 年,但 2015 年才得到主流浏览器的支持,早期浏览器通过 long polling polyfill 支持 sse,2019年前后主流浏览器已切换到 http-streaming 对 sse 进行支持。

HTTP-streaming:服务端通过三板斧——

Content-Type: text/event-stream Connection: keep-alive Transfer-Encoding: chunked

告诉浏览器,我一会儿还要不断 response,切莫关闭连接。2018 年标准化,2020 年各大主流浏览器支持。(可以看到基本上是支持力度最高的那个)

三者的区别在于:

  • websocket 是真正的双向通信,可以实现任意时间客户端向服务端发送数据,服务端向客户端发送数据,任意时间。

可以用不关闭的 HTTP 连接,来替代 WebSocket 吗?  第1张

Websocket

  • sse 是单向通信,只能是服务端向客户端通信,通用性较差,且是在 stream 协议上封装的协议比如 event-id, data。 支持重连,跟ws一样不需要你去碰chunk这一层。

可以用不关闭的 HTTP 连接,来替代 WebSocket 吗?  第2张

sse

  • streaming 相比 sse 更加底层也更加通用,可能需要先手动解析 chunk,一个大的 json 有可能会被分片成多个 chunk,这就需要客户端拼接解析才能得到 json,比 sse 麻烦,但优势在于客户端可以像普通的 post 请求那样发送一个 json 到服务端,服务端根据入参轮询 缓存/中间件/数据库/订阅 mq,然后持续性发送 response。相比 sse,stream 的优势可以先由客户端 post 一个 request,然后不断地read response。

可以用不关闭的 HTTP 连接,来替代 WebSocket 吗?  第3张

http streaming

总结:

ws 可以是客户端和服务端任意端发起数据传输,但通常一个应用或者一个页面只有一个 ws 连接,意味着所有请求都复用这个连接,这就要集中化处理各式各样的请求,编程难度较大,对于应用协议的设计功力是一种考验。

sse 编码简单,但只能是服务端单向向客户端传输数据,如果想先让客户端 post 一个请求,服务端根据请求的参数再进行选择性推送,只能寻求更加底层的 stream 了。

streaming 客户端编码难度较大,特别是 chunk 的处理,类似于粘包问题。但对于服务端来说编码会更加简单,就是普通的 post 接口,对于 HttpReuestWriter w,for 循环多次调用 w.write(xxx) 即可。

最终选用哪种技术就看需求了。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/12/5710.html

分享给朋友:

相关文章

为什么苹果贵没人喷,华为贵一群人喷?

苹果:6:¥5288,6s:¥5288,7:¥5288,8:¥5288,XR:¥6299,11:¥5499,12:¥5999,13:¥5999,14:¥5999,15:¥5999,16:¥5999华为:P8:¥2888,P9:¥2988,P...

为什么雷军身上没有酒色财气?

武大建校130周年时,雷军向母校个人捐款13亿。在2023年8月14日晚上七点,雷总在国家会议中心举行的进行第四次年度演讲「成长」:全篇都在谈成长、梦想,这么多年了,始终做到了知行合一,我相信酒色财气可能真不是他所追求的,一直追求的就像他演...

什么样的网站能快速捕获你的心?

什么样的网站能快速捕获你的心?

大家好,我是程序员鱼皮。大家如果平时使用网站或产品时出现了问题,一般都会去寻找 “联系客服” 的位置,从而获得人工的帮助。我们团队的面试刷题产品 - 面试鸭最近就遇到了这样一个难题:明明我们网站右下角就有联系客服按钮、而且我们每道面试题目下...

怎样拥有一台最便宜的服务器?

怎样拥有一台最便宜的服务器?

内容提示:主打一个 DIY + 极限白嫖 =)某宝花10块买一个“随身WiFi”,刷入Ubuntu,用SSH远程连接,但是记得一定要把外壳撬掉然后粘个散热器(哪怕是白萝卜也彳亍),否则会过热详细去酷安社区搜“随身WiFi”=========...

常微分方程的理论对偏微分方程的研究有没有帮助?

常微分方程的理论对偏微分方程的研究有没有帮助?

之前看到过一句话,好像是 Bourgain 说的,大意是做 ode 的做到深处就到了 pde,做 pde 的做到深处就到了 ode,ode 和 pde 最后是相通的。以我目前有限的知识,只知道下面两个方向:1. Hamilton 系统在现代...

鸿蒙系统到底是不是安卓系统?

你好,是的。接下来我给不懂技术的人简单的说一下哄蒙系统的来龙去脉。首先你要知道什么是开源。‌‌开源(Open Source)全称为开放源代码‌,意味着任何人都可以获取和使用软件的源代码,并在遵守版权协议的前提下进行修改和再发布。‌12开源软...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。