当前位置: 首页 > news >正文

服务器给前端实时推送数据轻量化解决方案eventSource+Springboot

一、前端代码

body代码

<div id="result"></div>

js代码

$(function(){if(typeof(EventSource) != "undefined"){var source = new EventSource("/demo/getTime");source.onmessage = function(event) {console.log(event.data);$("#result").html(event.data);};source.addEventListener('error', function (event) {console.log("错误:" + event);});source.addEventListener('open', function (event) {console.log("建立连接:" + event);});} else {document.getElementById("result").innerHTML="抱歉,你的浏览器不支持 server-sent 事件...";}
})

二、后端代码

WebFlux 框架依赖jar包

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

控制器代码

@GetMapping(value = "/getTime",produces="text/event-stream;charset=UTF-8")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入name")
public Flux<String> getTime() {return Flux.interval(Duration.ZERO,Duration.ofSeconds(1)).map(i -> "最新时间:" + DateUtil.time() + "-" + i);
}

Flux.interval(Duration.ZERO,Duration.ofSeconds(1)),等待0秒开始,间隔1秒,Flux流数据里面的数字加1
三、效果展示
数据推送效果时间和数字一直在增加,后端在不断推送,前端订阅到数据更新到页面

相对于websocket简单很多,只需要很少的代码就实现前端数据的实时刷新,只不过eventSource是单向数据通信,websocket可实现双向通信。

http://www.lryc.cn/news/162979.html

相关文章:

  • 数据结构与算法:数据结构基础
  • virtualbox虚拟机中安装FreeDOS系统和DJGPP编译环境
  • JAVASE事件监听
  • ubuntu14.04改静态ip
  • “文件的上传与下载:实现与优化“
  • uboot顶层Makefile前期所做工作说明三
  • Mysql树形表的两种查询方案(递归与自连接)
  • text-align和text-align-last的属性值
  • SpringMVC的注解、参数传递、页面跳转
  • OAK相机:启动报错X_LINK_DEVICE_NOT_FOUND
  • Python异常处理——走BUG的路,让BUG无处可走
  • 如何解决iOS打包工具AppUploader登录权限问题?
  • leetcode分类刷题:基于数组的双指针(四、小的移动)
  • eclipse
  • VIT中的einops包详解
  • 目标检测笔记(十三): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程))
  • 【数据结构】设计环形队列
  • 无涯教程-JavaScript - COUPDAYSNC函数
  • python 随机生成emoji表情
  • python关闭指定进程以excel为例
  • 前后端中的异步和事件机制 | 前后端开发
  • 设计模式篇(Java):装饰者模式
  • Spark【RDD编程(三)键值对RDD】
  • 从板凳围观到玩转行家:Moonbeam投票委托如何让普通用户一同参与
  • SpringMVC的文件上传文件下载多文件上传---详细介绍
  • Spark【RDD编程(四)综合案例】
  • Golang报错mixture of field:value and value initializers
  • 【网络教程】记一次使用Docker手动搭建BT宝塔面板的全过程(包含问题解决如:宝塔面板无法开启防火墙,ssh,nginx等)
  • 【大虾送书第九期】速学Linux:系统应用从入门到精通
  • docker相关命令