获得徽章 7
⭐️ AI大模型爆火的SSE技术到底是什么?万字长文,一篇读懂SSE!
💦 SSE(Server-Sent Events)是一种基于 HTTP 协议的服务器推送技术,允许服务端主动向客户端发送数据流。SSE 可以被理解为 HTTP 的一个扩展或一种特定用法。
SSE 就像是服务器打开了一个“单向数据管道”,服务器通过HTTP 扩展 可以持续不断地流向浏览器,无需客户端反复发起请求。
SSE 提供了一种简单、可靠的方式来实现服务器向客户端的实时数据推送。它非常适合通知、实时数据更新、日志流和类似 ChatGPT 的逐字输出场景。如果你只需要单向通信,SSE 往往是比 WebSocket 更简单、更轻量的选择。
所以,目前几乎所有主流浏览器都原生支持SSE。
💦 在 SSE 技术出现之前,Web 应用要实现服务器向客户端的实时数据推送,主要依赖短轮询、长轮询、Flash 、 WebSocket这几种技术,但它们都存在明显的缺陷。
Web 领域迫切需要一种标准化的、高效的、由浏览器原生支持的服务器到客户端的单向通信机制。这就是 SSE 诞生的核心背景。
💦 AI 应用需要“打字机”式的逐 token 输出体验,而 SSE 作为一种基于 HTTP 的、简单的、单向的服务器推送技术,是实现这种体验最自然、最高效、最可靠的技术选择。
它就像是为这个场景量身定做的工具,没有多余的功能,只有恰到好处的设计。因此,当 ChatGPT 等应用席卷全球时,其背后默默无闻的 SSE 技术也终于从幕后走到了台前,被广大开发者所重新认识和重视。(
️全文阅读:
www.52im.net)
💦 SSE(Server-Sent Events)是一种基于 HTTP 协议的服务器推送技术,允许服务端主动向客户端发送数据流。SSE 可以被理解为 HTTP 的一个扩展或一种特定用法。
SSE 就像是服务器打开了一个“单向数据管道”,服务器通过HTTP 扩展 可以持续不断地流向浏览器,无需客户端反复发起请求。
SSE 提供了一种简单、可靠的方式来实现服务器向客户端的实时数据推送。它非常适合通知、实时数据更新、日志流和类似 ChatGPT 的逐字输出场景。如果你只需要单向通信,SSE 往往是比 WebSocket 更简单、更轻量的选择。
所以,目前几乎所有主流浏览器都原生支持SSE。
💦 在 SSE 技术出现之前,Web 应用要实现服务器向客户端的实时数据推送,主要依赖短轮询、长轮询、Flash 、 WebSocket这几种技术,但它们都存在明显的缺陷。
Web 领域迫切需要一种标准化的、高效的、由浏览器原生支持的服务器到客户端的单向通信机制。这就是 SSE 诞生的核心背景。
💦 AI 应用需要“打字机”式的逐 token 输出体验,而 SSE 作为一种基于 HTTP 的、简单的、单向的服务器推送技术,是实现这种体验最自然、最高效、最可靠的技术选择。
它就像是为这个场景量身定做的工具,没有多余的功能,只有恰到好处的设计。因此,当 ChatGPT 等应用席卷全球时,其背后默默无闻的 SSE 技术也终于从幕后走到了台前,被广大开发者所重新认识和重视。(
展开
评论
点赞
💦 而为了让即时通讯更安全,高安全场景下的IM系统通常会使用端到端加密技术进行通讯加密。
💦 一般的数据加密可以在通信的3个层次来实现:链路加密、节点加密和端到端加密。
💦 端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在。采用端到端加密(又称脱线加密或包加密),消息在被传输时到达终点之前不进行解密,因为消息在整个传輸过程中均受到保护,所以即使有节点被损坏也不会使消息泄露。
💦 在IM系统中,当用户A发送消息给用户B时,IM系统会生成一对公钥和私钥,并将公钥发送给用户B。用户A使用用户B的公钥对消息进行加密,然后将加密后的消息发送给用户B。
💦 在用户B接收到消息后,使用自己的私钥对消息进行解密,从而获取明文内容。由于私钥只有用户B拥有,因此除了用户B之外,任何人都无法解密消息。
(
展开
评论
1
零基础IM开发入门:什么是IM聊天系统的消息时序一致性?所谓的一致性,在IM中通常指的是消息时序的一致性,那就是:
1)聊天消息的上下文连续性;
2)聊天消息的绝对时间序。
再具体一点,IM消息的一致性体现在:
1)单聊时:要保证发送方发出聊天消息的顺序与接收方看到的顺序一致;
2)群聊时:要保证所有群员看到的聊天消息,与发送者发出消息时的绝对时间序是一致的。
IM系统中消息时序的一致性问题是个看似简单,实则非常有难度的技术热点话题之一。
![[666]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_128.e55728c.png)
![[666]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_128.e55728c.png)
![[666]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_128.e55728c.png)
在普通IM用户的眼里,消息无非是从一台手机传递到另一台手机而已,保证时序有何困难?
是的,普通用户这么认为,从技术上讲,他只是单纯的将IM消息的收发过程理解为单线程的工作模式而已。
实际上,在IM这种高性能场景下,服务端为了追求高吞吐、高并发,用到了多线程、异步IO等等技术。
在这种情况下,“高并发”与“顺序”对于IM服务端来说,本来就是矛盾的,这就有点鱼与熊掌的味道了(两者很难兼得)。
所以,要实现IM场景下的消息时序一致性,需要做出权衡,而且要考虑的技术维度相当多。这就导致具体技术实施起来没有固定的套路,而由于开发者技术能力的参差不齐,也就使得很多IM系统在实际的效果上会有较大问题,对于用户而言也将直接在产品体验上反应出来。(全文阅读:
展开
评论
点赞