首页 > 编程语言 >Java Spring使用EventSource进行服务端推送

Java Spring使用EventSource进行服务端推送

时间:2023-03-22 10:13:45浏览次数:46  
标签:Java log Spring event getWriter EventSource response getDate

Java代码:

@ResponseBody
        @RequestMapping(value = "/getDate", produces="text/event-stream;charset=UTF-8")
        public void getDate(HttpServletResponse response) throws Exception {
            log.info("getDate event start");
            response.setContentType("text/event-stream");
            response.setCharacterEncoding("UTF-8");
            response.setStatus(200);
            while(!response.getWriter().checkError()){
                response.getWriter().write("data:"+new Date()+"\n\n");
                response.getWriter().flush();
                Thread.sleep(1000);
            }
            response.getWriter().close();
            log.info("getDate event end");
        }

前端代码(jsp):

<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
     
    <!DOCTYPE html>
    <html>
    <head>
        <title>日期</title>
    </head>
    <body>
    <div id='date'>
    </div>
    <script>
            if (typeof(EventSource) !== "undefined") {
                var eventSource = new EventSource("/Output/getDate");
                
                eventSource.onmessage = function (event) {
                    document.getElementById("date").innerHTML = event.data;
                         
                }            
                eventSource.addEventListener('error', function (event) {
                    console.log("错误:" + event);
                });
                eventSource.addEventListener('open', function (event) {
                    console.log("建立连接:" + event);
                });
            }
            else {
                document.getElementById("date").innerHTML = "抱歉,您的浏览器不支持 server-sent 事件 ...";
            }   
        
    </script>
     
    </body>
    </html>

 

标签:Java,log,Spring,event,getWriter,EventSource,response,getDate
From: https://www.cnblogs.com/qianxiaoPro/p/17242569.html

相关文章

  • Java中实现按字符串位数在前面补0
    场景现在要将4在前面补位为0004。实现1.首先将方法包装为工具类StringwaterCode=CommonUtils.fillZeroBeforeString(String.valueOf(max),4);其中max为最大值即4,第二个参......
  • Java远程唤醒mac
    关机的,大家都会……想比我就不说了吧!通过IP,使用shutdown命令,外加参数……附上地址,OK。packagecom.iaiai.test;importjava.net.DatagramPacket;i......
  • Spring线程池ThreadPoolTaskExecutor
    1.线程池配置@ConfigurationpublicclassTaskExecutorConfigimplementsAsyncConfigurer{@Value("${async.core.pool.size:10}")//核心线程数privateIn......
  • Java并发夺命50问
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • 2、Spring中的一些现象
    1、注入模型默认的注入模型:AbstractBeanDefinition.AUTOWIRE_NO=0通过构造方法注入1.1、setter方法名称注入模型AbstractBeanDefinition.AUTOWIRE_BY_NAME=11.1.1、现......
  • Java面试-基础篇之3
    3.Java中的深拷贝和浅拷贝的区别在解释深浅拷贝前先了解一个数据在Java语言中的类别和存储形式。我们都知道在Java中,数据都叫做对象,拷贝也是针对对象来做的。在Java中存......
  • JavaWeb使用Kaptcha生成验证码(jar版)
    使用方式 Web项目导入jar包kaptcha-2.3.0.jar1.1:自定义jar包位置 自定义的jar包位置需要点击AddasLibrary才能使用,一般选......
  • SpringBoot 第二部分知识点
    SpringBoot-第⼆天1.学习目标2Mybatis整合数据访问使用SpringBoot开发企业项目时,持久层数据访问是前端页面数据展示的基础,SpringBoot支持市面上常见的关系库......
  • springcloud学习——nacos
    1介绍nacos是阿里巴巴开发的,现在已属于springcloud框架,功能比eureka更加丰富2安装与启动下载:GitHub主页:https://github.com/alibaba/nacos解压安装包后,在bin文件夹中......
  • 获取以今天为起始日期后两周的日期的Java方法
    importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;publicclassDateUtils{publicstaticStringgetTwoWeeksLaterDate()......