flux服务器推消息,服务端主动推送数据,除了 WebSocket 你还能想到啥?

本文介绍了SSE(Server-Sent Events)技术,作为服务器向浏览器单向推送数据的一种方式,与WebSocket相比,SSE使用HTTP协议且更轻量级。文章通过一个Java Servlet实例展示了SSE的实现,包括发送与接收数据,自定义事件,并对比了SSE与WebSocket的区别。了解SSE可以帮助更好地理解WebFlux中Flux接口的用法。
摘要由CSDN通过智能技术生成

原标题:服务端主动推送数据,除了 WebSocket 你还能想到啥?

来自公众号: 江南一点雨

在 上篇文章 中,松哥和大家分享了 WebFlux 的基本用法,小伙伴们已经了解到使用 WebFlux 我们的返回值可以是 Mono 也可以是 Flux,如果是 Flux,由于 Flux 中包含多个元素,所以我们需要设置响应的 Content-Type 为 text/event-stream 。考虑到很多小伙伴还没用过 text/event-stream ,所以今天松哥再撸一篇文章来和大家聊聊 text/event-stream 。

1.SSE

首先我们来看一个概念叫做 SSE。

SSE 全称是 Server-Sent Events,它的作用和 WebSocket 的作用相似,都是建立浏览器与服务器之间的通信渠道,然后服务器向浏览器推送信息,不同的是,WebSocket 是一种全双工通信协议,而 SSE 则是一种单工通信协议,即使用 SSE 只能服务器向浏览器推送信息流,浏览器如果向服务器发送信息,就是一个普通的 HTTP 请求。

使用 SSE,当服务端给客户端响应的时候,他不是发送一个一次性数据包,而是会发送一个数据流,这个时候客户端的连接不会关闭,会一直等待服务端发送过来的数据流,我们常见的视频播放其实就是这样的例子。

SSE 和 WebSocket 主要有如下区别:

SSE 使用 HTTP 协议,现有的服务器软件都支持。WebSocket 是一个独立协议。

SSE 属于轻量级,使用简单;WebSocket 协议相对复杂。

SSE 默认支持断线重连,WebSocket 需要自己实现。

SSE 一般只用来传送文本,二进制数据需要编码后传送,WebSocket 默认支持传送二进制数据。

SSE 支持自定义发送的消息类型。

说了这么多,可能大家还是有点懵,接下来松哥通过一个简单的例子来向大家展示 SSE 的用法。

2.开发服务端

根据第一小节的描述,大家也能看出来,SSE 其实和框架没有关系,所以这里松哥就创建一个普通的 Java Web 项目,用最最基本的 Servlet 来向大家演示 SSE 的功能。

首先我们创建一个 SseServlet,内容如下:

@WebServlet(urlPatterns = "/sse")

publicclassSseServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletReq

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值