java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringMVC的SseEmitter实时推送

SpringMVC的SseEmitter实时推送方式

作者:楠~枫

SseEmitter是SpringMVC提供的一种技术,可以实现服务端向客户端实时推送数据的功能,在Controller中提供一个接口返回SseEmitter对象,发送数据可以在另一个接口调用其send方法,SpringBoot已经集成此功能

SseEmitter简介

SpringMVC提供的一种技术,可以实现服务端向客户端实时推送数据的功能

用法

在Contorller中提供一个接口,返回SseEmitter对象,发送数据可以在另一个接口调用其send方法发送数据,SpringBoot已经集成这个功能

用法示例:

@RestController
public class SseEmitterTestController {
    private SseEmitter sseEmitter;

    /**
     * 步骤一:请求后浏览器会阻塞,直到close后结束阻塞
     */
    @RequestMapping("start")
    public SseEmitter start() {
        //默认是30s超时,设置为0L永不超时
        sseEmitter=new SseEmitter(0L);
        //将这个对象返回
        return sseEmitter;
    }

    /**
     * 步骤二:请求后会像浏览器发送数据,可以多次请求
     */
    @RequestMapping("send")
    public String  send() {
        if (sseEmitter!=null){
            try {
                sseEmitter.send(new Date());
                return "send seccuss";
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "send fail";
    }

    /**
     * 步骤三:请求后会结束对浏览器的阻塞,结束数据发送
     */
    @RequestMapping("close")
    public String  close() {
        if (sseEmitter!=null){
            sseEmitter.complete();
            return "close";
        }
        return "close fail,sseEmitter is null";
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文