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

Springboot sse 示例

java Ctr层代示例代码


import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@RestController
@RequestMapping("/sseDemo")
public class SseDemoCtr {

    private final ExecutorService executorService = Executors.newSingleThreadExecutor();
    @GetMapping(value = "/test", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter test() {
        SseEmitter emitter = new SseEmitter();

        executorService.submit(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    // 发送SSE事件
                    emitter.send(SseEmitter.event().data("这是一段测试消息 " + i));
                    // 模拟一些处理时间
                    Thread.sleep(1000);
                }
                // 完成SSE流
                emitter.complete();
            } catch (IOException | InterruptedException e) {
                // 发生错误时关闭SSE流
                emitter.completeWithError(e);
            }
        });

        return emitter;
    }
}

前端js核心代码


    <script>
			
        const evtSource = new EventSource('/sseDemo/test');
        const messages = document.getElementById('messages');
 
        evtSource.onmessage = function(event) {
            const newElement = document.createElement("p");
            const eventObject = JSON.parse(event.data);
            newElement.textContent = "Message: " + eventObject.message + " at " + eventObject.timestamp;
            messages.appendChild(newElement);
        };
		
    </script>


http://www.kler.cn/a/513618.html

相关文章:

  • EAMM: 通过基于音频的情感感知运动模型实现的一次性情感对话人脸合成
  • 【物联网】keil仿真环境设置 keilV5可以适用ARM7
  • 线程池 | java中的多线程
  • .Net WebApi 中的Token参数校验
  • 当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线
  • 【自动控制原理】非线性系统 描述函数法 相平面法
  • (done) 并行计算学习 (Day1: 两个简单的 OpenMP 例子)
  • JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码
  • 【C++】揭秘类与对象的内在机制(核心卷之深浅拷贝与拷贝构造函数的奥秘)
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(五)-数的三次方根、机器人跳跃问题、四平方和
  • Python 进阶 - Excel 基本操作
  • 智能系统的感知和决策
  • 第15篇:从入门到精通:Python标准库详解
  • LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))
  • 简识JVM私有内存区域栈、数据结构
  • 蓝桥杯R格式--高精度算法模拟
  • 【MySQL】 常见数据类型
  • 10倍数据交付提升 | 通过逻辑数据仓库和数据编织高效管理和利用大数据
  • C#程序关闭时保证所有线程结束的方法
  • elasticsearch 数据导出/导入
  • 【记录】记录项目中的问题
  • Linux常用汇总
  • windows下修改docker的镜像存储地址
  • 易语言模拟真人鼠标轨迹算法 - 防止游戏检测
  • Axios HTTP库基础教程:从安装到GET与POST请求的实现
  • 二十八、Qos服务质量