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

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

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

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

分享给朋友:

相关文章

左手短视频,右手啄木鸟,小红书要抛弃KOC了吗?

左手短视频,右手啄木鸟,小红书要抛弃KOC了吗?

左手短视频,右手啄木鸟,小红书要抛弃KOC了吗? 上周六,微博上掀起了声势浩大的声讨小红书的活动,起因是众多博主发现自己的合规笔记被小红书判定违规,且申诉失败。博主们激烈的言辞之间,纷纷将矛...

自媒体如何快速起步?

自媒体如何快速起步?

有两种经验,可供参考。第一种是:现象级的爆火、爆款,这种情况捞到钱,实现财务自由的人并不多,但确实存在。只不过非要说清楚为什么这个账号可以火、可以短时间内赚到普通人一辈子赚不到的钱,他们自己也不一定能说清楚,因为赶上了风口(内外部情况)。举...

你为什么讨厌抖音?

我就被抖音毁了。现在被我媳妇从抖音里拯救出来了。我为什么会这样说?我媳妇硕士在读,我文化程度相对就比较低了。大多数人看抖音其实就是为了一图一乐呵刚开始我也是这样的,我是2017年在朋友的推荐下注册了抖音,刚开始那时候对抖音不太上瘾,一周也就...

用红米手机会很丢人吗?

前些日子遇到了一位快递小哥,京东的,签收小哥年纪不算大,目测二十多岁他的手机上全是一道道极严重的划痕,有点卡,他开热点了,热点名就是手机型号,红米9a,我父母的同款现在他那边操作了一会,然后又是我这边操作了一会小哥看着我手机刷刷的,颇有些好...

程序员都有自己的服务器吗?

程序员都有自己的服务器吗?

2024.9. 24,有朋友咨询功耗,我没有单独给服务器弄智能插座,系统做的 esxi 也看不到,所以只能用其他角度判断供大家参考。我有一个餐边柜改的机柜,里面白裙两盘,黑群晖 4 机械 1 mvme,一个爱快硬路由,一个联通光猫,一个 2...

在 Kubernetes 中,Service 的实现原理是什么,它是如何实现服务发现的?

行,问的这个问题挺有意思,Kubernetes 里 Service 是怎么实现的,服务发现是怎么回事,咱就直说了。这事儿看起来挺玄乎,但掰开揉碎了讲,也就那么回事。你得把这事儿想得简单点,别一上来就被啥术语吓住了——其实全是些搬砖的套路。咱...

发表评论

访客

看不清,换一张

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