首页 > 其他分享 >超好用Web服务端主动推送技术SSE

超好用Web服务端主动推送技术SSE

时间:2022-11-05 21:23:10浏览次数:57  
标签:Web printWriter String httpServletResponse var 超好 SSE retry sse

1、前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="msg_from_server"></div>
<div id="sse"></div>

<script>
    // var sse = new EventSource("http://127.0.0.1:8080/sse")
    var sse = new EventSource("http://127.0.0.1:8080/sse-retry")
    sse.onmessage = function (evt) {
        var el = document.getElementById("sse");
        el.innerHTML = evt.data;
    }
</script>

</body>
</html>

2、后端代码

@Controller
public class SSEController {

    @RequestMapping(value = "/sse")
    @ResponseBody
    public String getStreamDataImprove(HttpServletResponse httpServletResponse) {
        httpServletResponse.setContentType("text/event-stream");
        httpServletResponse.setCharacterEncoding("utf-8");
        String s = "";
        while (true) {
            s = "data:" + LocalDateTime.now() + "\n\n";
            try {
                PrintWriter printWriter = httpServletResponse.getWriter();
                Thread.sleep(1000L);
                printWriter.write(s);
                printWriter.flush();
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @RequestMapping(value = "/sse-retry")
    @ResponseBody
    public void getStreamDataImprove1(HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.setContentType("text/event-stream");
        httpServletResponse.setCharacterEncoding("utf-8");
        String s ="retry:2000\n";
        s+="data:"+LocalDateTime.now()+"\n\n";
        PrintWriter printWriter = httpServletResponse.getWriter();
        printWriter.write(s);
        printWriter.flush();
    }
}

标签:Web,printWriter,String,httpServletResponse,var,超好,SSE,retry,sse
From: https://www.cnblogs.com/xl4ng/p/16861332.html

相关文章

  • webpack5 学习手册
    1.初始化webpack项目npminit-y(初始化一个package.json文件)2.npmiwebpackwebpack-cli-D下载这两个依赖包3.npxwebpack./src/main.js--modedevelopme......
  • web
    title:建站之旅date:{{date}}时间历程2022/11/04入园,打算好好打理博客.2022/11/05做了一天的hexo,终于可以在本地实现界面.荆棘之路fatal:Thecurrentbranch......
  • Jmeter断言之Json Assertion
    现在大部分的程序都是通过json格式返回数据,所以JsonAssertion也是非常重要的一个组件添加JsonAssertion组件使用方法 ......
  • Jmeter断言之Xpath Assertion
    Xpath:XML路径语言(XMLPathLanguage),它是一种用来确定XML文档中某部分位置的语言。首先添加XpathAssertionXpathAssertion界面......
  • 用DIV+CSS技术设计的音乐主题网站(web前端网页制作课作业)
    ......
  • web3-react基本用法
    背景:web3真会玩,除了web3js,etherjs外,又搞出来一个web3-react,看不懂原来是知识盲区。 唤起metamask只需要一个activate方法const{activate}=useWeb3React();cons......
  • Maven下web项目配置Servlet与Mybatis及注意事项
    在之前的学习过程中,我一直在使用Maven项目(因为相对比较方便),但是在配置时出现了各种问题,在此总结一下。先放一下配置好的项目结构1.用Maven配置web项目1>首先确保......
  • .net core web html中午查看源码显示乱码
    在.NetCoreWeb的视图获取从后台传来的数据的时候,默认使用的是UnicodeRanges.BasicLatin进行的编码,所以在前台显示中文,而在查看源码的时候,就会发现中文进行过编码操作......
  • SpringBoot集成安全认证框架Shiro的简单方法,能有效区分RestAPI 接口与web页面的不同处
    本文介绍在SpringBoot2.6下配置Shiro认证的方法:1.pom.xml引入依赖<dependency><groupId>org.apache.shiro</groupId><artifactId>sh......
  • JavaWeb 学习心得体会
    javaweb学习心得时光转瞬即逝,一个学期的javaweb课程完美结束了。我学到了很多知识,例如:Web应用的基本概念与系统架构,JSP编程技术及WebJDBC数据库开发技术等等......