当前位置: 首页 > 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可实现双向通信。

相关文章:

服务器给前端实时推送数据轻量化解决方案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);$(&qu…...

数据结构与算法:数据结构基础

目录 数组 定义 形式 顺序存储 基本操作 读取元素 更新元素 插入元素 删除元素 扩容 初始化 时机 步骤 优劣势 链表 定义 单向链表 特点 双向链表 随机存储 基本操作 查找节点 更新节点 插入节点 删除元素 数组VS链表 栈与队列 栈 定义 基本操作…...

virtualbox虚拟机中安装FreeDOS系统和DJGPP编译环境

一、安装FreeDOS系统 1、从官网下载FreeDOS系统镜像&#xff0c;下载的压缩包中包含两个文件&#xff1a;后缀为.iso和.img的镜像 ​​​下载页面 http://www.freedos.org/download/ 直接下载链接 https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.…...

JAVASE事件监听

代码&#xff1a; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner;import javax.swing.JButton; import javax.…...

ubuntu14.04改静态ip

现在可能已经用ubuntu14.04的人已经不多了&#xff0c;这里讲一下Ubuntu14.04怎么改静态ip 第一步&#xff1a;输入ifconfig查看ip和子网掩码 第二步&#xff1a;输入route -n查看网关 上面ip是192.168.88.136&#xff0c;子网掩码是255.255.255.0&#xff0c;网关是192.168.…...

“文件的上传与下载:实现与优化“

目录 引言1.文件的上传2.文件的下载3. JRebel安装使用4. 文件批量上传总结 引言 在开发过程中&#xff0c;文件的上传与下载是常见的需求。本篇博客将以CSND为例&#xff0c;介绍文件上传与下载的常见方式&#xff0c;以及如何通过优化提升性能和用户体验。 1.文件的上传 使…...

uboot顶层Makefile前期所做工作说明三

一. uboot顶层 Makefile文件 uboot顶层 Makefile&#xff0c;就是 uboot源码工程的根目录下的 Makefile文件。 本文继续对 uboot顶层 Makefile的前期准备工作进行介绍。续上一篇文章内容的学习&#xff0c;如下&#xff1a; uboot顶层Makefile前期所做工作说明二_凌肖战的博…...

Mysql树形表的两种查询方案(递归与自连接)

你有没有遇到过这样一种情况&#xff1a; 一张表就实现了一对多的关系&#xff0c;并且表中每一行数据都存在“爷爷-父亲-儿子-…”的联系&#xff0c;这也就是所谓的树形结构 对于这样的表很显然想要通过查询来实现价值绝对是不能只靠select * from table 来实现的&#xff0…...

text-align和text-align-last的属性值

text-algin 文本对齐方式&#xff1a; &#xff08;1&#xff09;left&#xff1a;左对齐&#xff1b; &#xff08;2&#xff09;right&#xff1a;右对齐&#xff1b; &#xff08;3&#xff09;center&#xff1a;居中对齐&#xff1b; &#xff08;4&#xff09;start&…...

SpringMVC的注解、参数传递、页面跳转

一.SpringMvc常用注解 常用注解 RequestMapping:RequestMapping注解是一个用来处理请求地址映射的注解&#xff0c;可用于映射一个请求或一个方法&#xff0c;可以用在类或方法上。 RequestParam:RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上 ModelAttr…...

OAK相机:启动报错X_LINK_DEVICE_NOT_FOUND

OAK相机&#xff1a;启动报错X_LINK_DEVICE_NOT_FOUND 环境报错原因与解决未设置 udev 规则USB崩溃排线接触不良或相机模块时钟干扰 环境 硬件&#xff1a; 4✖️OV9782相机模组OAK-FFC-4P驱动模组笔记本电脑 软件&#xff1a; Ubuntu18.04python 3.9depthai 2.21.2.0 报错…...

Python异常处理——走BUG的路,让BUG无处可走

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、了解python异常 1、BUG 单词的由来 2、什么是异…...

如何解决iOS打包工具AppUploader登录权限问题?

摘要&#xff1a;在iOS技术博主的指导下&#xff0c;了解如何解决使用AppUploader打包时出现的权限问题。本文将深入探讨此问题&#xff0c;为你提供详细的解决方案。 引言&#xff1a; 作为iOS开发者&#xff0c;我们经常需要使用工具来打包和上传应用程序。AppUploader 是一…...

leetcode分类刷题:基于数组的双指针(四、小的移动)

leetcode上有些题是真的太难了&#xff0c;正常读题之后完全想不到要用双指针来求解&#xff0c;本次博客总结的题目是双指针初始时位于数组两端&#xff0c;哪个元素小就移动哪个指针 11. 盛最多水的容器 1、这道题放在42. 接雨水的相似题目里&#xff0c;可能是因为它们都有相…...

eclipse

快捷键 F4: 继承树 F3: 查看变量、方法、类的定义, 跳到光标所在标识符的定义代码。(Ctrl左键) CtrlShiftG&#xff1a; 在工作空间中查找引用了光标所在标识符的位置。与F3相反的快捷键。当按类定义进行阅读时&#xff0c;当前类方法或者函数在被哪些地方调用 controlTAB: 切…...

VIT中的einops包详解

‘’‘einops有三个常用方法&#xff1a;rearrange,repeat,reduce’‘’ rearrange的操作相当于转置 rearrange(image,‘h w c -> w h c’) 高和宽转置 path ../data/cat_and_mouse.jpg image cv2.imread(path) h,w,c image.shape # shape第一个值是h,第二个是w image…...

目标检测笔记(十三): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程))

文章目录 一、目标检测介绍二、YOLOv5介绍2.1 和以往版本的区别 三、代码获取3.1 视频代码介绍 四、环境搭建五、数据集准备5.1 数据集转换5.2 数据集验证 六、模型训练七、模型验证八、模型测试九、评价指标 一、目标检测介绍 目标检测&#xff08;Object Detection&#xff…...

【数据结构】设计环形队列

环形队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 环形队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里&#xff0c;一旦一个队列…...

无涯教程-JavaScript - COUPDAYSNC函数

描述 COUPDAYSNC函数返回从结算日期到下一个息票日期的天数。 语法 COUPDAYSNC (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMaturity 证…...

python 随机生成emoji表情

问答板块觉得比较有意思的问题 当时搜了些网上的发现基本都不能用&#xff0c;不知道是版本的问题还是咋的就开始自己研究 python随机生成emoji 问题的产生解决官网文档数据类型实现思路实现前提&#xff1a;具体实现&#xff1a; 其他常见用法插入 Emoji 表情&#xff1a;解析…...

Cursor AI 规则引擎:自动化编码规范与项目约束实践指南

1. 项目概述&#xff1a;一个为 Cursor 编辑器量身定制的规则引擎如果你和我一样&#xff0c;深度依赖 Cursor 这款 AI 驱动的代码编辑器&#xff0c;那你一定经历过这样的时刻&#xff1a;面对 AI 生成的代码&#xff0c;既惊叹于它的效率&#xff0c;又时常为它不遵守团队规范…...

TestDisk与PhotoRec:免费开源的数据恢复双雄终极指南

TestDisk与PhotoRec&#xff1a;免费开源的数据恢复双雄终极指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 在数字时代&#xff0c;数据丢失是每个人都会遇到的噩梦。无论是误删除重要文件、分区表损坏…...

【NotebookLM经济学研究辅助终极指南】:20年量化研究员亲授5大高阶用法,90%学者还不知道的AI研报加速术

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM经济学研究辅助的底层逻辑与范式革命 NotebookLM 以语义理解为核心&#xff0c;将传统文献驱动的研究流程重构为“知识图谱—问题锚定—推理生成”三位一体的新范式。其底层并非依赖关键词匹…...

METSO A413150输出模块

METSO A413150 是美卓&#xff08;Metso Automation&#xff09;BIU 8 分布式控制系统中的一款输出模块&#xff0c;主要用于向现场执行机构输出模拟量控制信号。中间15个特点METSO A413150 提供8通道模拟量输出&#xff0c;适用于多路控制信号输出。该模块分辨率为16位&#x…...

基于CircuitPython的嵌入式记忆游戏开发:状态机与TileGrid实战

1. 项目概述&#xff1a;一个嵌入式平台上的经典记忆配对游戏如果你玩过那种翻牌配对的记忆游戏&#xff0c;现在我们可以把它搬到一块小小的嵌入式开发板上&#xff0c;用CircuitPython来实现。这不仅仅是把游戏逻辑移植过来那么简单&#xff0c;它涉及到在资源受限的微控制器…...

STM32驱动安信可Rd-04毫米波雷达:硬件改造、I2C驱动移植与参数调优全攻略

1. 项目概述&#xff1a;从零开始驱动安信可Rd-04雷达模组最近在做一个智能感应的小项目&#xff0c;需要用到人体存在检测&#xff0c;对比了几种方案后&#xff0c;最终选择了安信可的Rd-04毫米波雷达模组。这玩意儿体积小、功耗低&#xff0c;最关键的是价格相当亲民&#x…...

NAS极速搭建PostgreSQL:打造个人专属数据仓库

1. 为什么选择NASPostgreSQL组合&#xff1f; 最近几年&#xff0c;越来越多的技术爱好者开始在家用NAS上部署数据库服务。我自己从2018年开始尝试这种方案&#xff0c;先后测试过MySQL、MongoDB和PostgreSQL&#xff0c;最终发现PostgreSQL在NAS上的表现最为出色。相比云数据库…...

从零到自动化:手把手教你用nRF Connect搭建个人BLE设备测试流水线

从零到自动化&#xff1a;手把手教你用nRF Connect搭建个人BLE设备测试流水线 在物联网设备开发中&#xff0c;蓝牙低功耗(BLE)技术的测试验证一直是让开发者头疼的环节。传统手动测试不仅效率低下&#xff0c;还容易因人为因素导致结果不一致。对于资源有限的硬件创业团队或个…...

如何三步轻松下载B站高清视频:BilibiliDown完整使用指南

如何三步轻松下载B站高清视频&#xff1a;BilibiliDown完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

3分钟掌握TestDisk:开源数据恢复终极解决方案

3分钟掌握TestDisk&#xff1a;开源数据恢复终极解决方案 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾因为误删除重要文件而彻夜难眠&#xff1f;是否经历过硬盘分区突然消失的恐慌&#xff1f;别…...