Java服务端推送--SSE

1、java代码:


    @GetMapping(value="/message", produces = "text/event-stream;charset=utf-8")
    public String sendMessage(){
    	try {
            Thread.sleep(1000); //线程休眠1秒
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        //实时消息推送
        StringBuilder builder = new StringBuilder();
 
        builder.append("data: hello world" + DateUtils.getTime() + " \n\n");//消息数据
        builder.append("id: 1916\n\n"); //事件id
        /**  
         * 消息事件
         * 如果不设置event字段,则客户端触发默认事件类型message。
         * 如果设置,则客户端触发事件类型为event字段对应设置的值。
         */
        builder.append("event: sseMessage\n\n");//消息事件
        builder.append("retry: 10000\n\n");//设置连接超时时间 毫秒
        builder.append("\n\n");//该事件类型结束,不同数据类型之间用\n\n(隔一行)来区分
 
        System.out.println(builder.toString());
        
        return builder.toString();
    }

2、js代码


        if (!!window.EventSource) {
            var event = new EventSource(ctx + "/test/user/message");

            event.addEventListener('message', function(t) {
                var data = t.data;
                document.write(data+"<br/>")
            });

            event.addEventListener("open",function (t) {
                console.log("开启");
            },false);

            event.addEventListener("error",function (t) {
                if (t.readyState  == EventSource.CLOSED) {
                    console.log("关闭");
                }
            },false);

        } else{
            console.error("浏览器不支持");
        }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值