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

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

卡卷网1年前 (2024-12-27)每日看点218

刚好在过去的职业生涯里多次使用到了各种服务端推送技术。给大家介绍我常用的 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

分享给朋友:

相关文章

中国CEO直播简史

中国CEO直播简史

  领导人爱对外发言这事,是中国的一个传统文化。  从乾隆爱往名画上盖章上,就可见一斑。  3Q大战时代,微博成了大佬“吵架”的战场,饭否变成了部分爱面子者的日记。  某种程度上说,互联网公关行业的诞生,和大佬们爱发言有着直接的关系。只不过...

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

今天整理了36个搞钱APP可以先接触学习看看,然后选定一个感兴趣的方向去精进要知道机会不是一下子来临的,而一定是你前期做了很多准备每天进步一点点,就像滚雪球一样希望所以女生,能够在2024年提升自己,立下一个新的搞钱Flag吧实用APP安利...

小米14 Pro和Redmi K70Pro怎么选?

小米14 Pro和Redmi K70Pro怎么选?

两款手机都使用了最新的骁龙8Gen3旗舰芯片,性能都是顶级,但是两款手机定位不同,卖点不同,红米K70 Pro定位主打性能的旗舰入门手机,小米14Pro定位旗舰中高端手机。具体根据个人需求与预算来选择:两款手机的相同、相似点:都使用了骁龙8...

为什么我感受不到 1500 元的手机比四五千的差?

我长期使用两千元左右的安卓机,一天接近8小时的重度手机使用者。某天我突然想试试看传说中非常赛艇的苹果。狠了心,砸了钱。七千大样买了爱疯。就这?什么辣鸡玩意。而且因为我一直更新软件,用了两年爱疯就卡了。并没有传说中的用四五年不卡。用了这么一次...

天涯神帖,第一神帖是什么?

天涯神帖,第一神帖是什么?

一些个人觉得比较经典的天涯神贴(更新进去了):话说1999年那会儿,中国的互联网还是个小婴儿,BAT三巨头都还在穿开裆裤呢,天涯社区就已经悄然诞生了。时光飞逝,到了2007年,这小小社区竟然已经吸引了超过2000万的注册用户,不得不说是个小...

PHP承载百万/天 访问量需要用到什么技术?

当年做一个百万PV的商城,也不过是两台2c4g的阿里云虚机罢了(其实一台就够,另外一台主要的逼着大家一定开发的时候一定要有负载均衡和横向扩容的意识)。当时框架还是Thinkphp3.2,框架提高运行效率的开关全打开,标准的lnmp模式,单机...

发表评论

访客

看不清,换一张

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