Sse之okhttp3中EventSource简单用法-服务端

2019-10-17 / 10 阅读 / Java
    @RequestMapping(value = "/sse/{userId}", produces = "text/event-stream;charset=UTF-8")
    public SseEmitter sse(@PathVariable String userId) {
        //通过userId作为key,为后面的定向推送
        SseEmitter sseEmitter = new SseEmitter(10000000L);
        sseMap.put(userId, sseEmitter);

        //region todo 示例推送
        new Thread() {
            @Override
            public void run() {
                new Timer().schedule(new TimerTask() {
                    private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

                    @Override
                    public void run() {
                        HashMap<String, String> data = new HashMap<>();
                        data.put("time", format.format(new Date()));
                        for (String s : sseMap.keySet()) {
                            sseMap.get(s).send(MapperUtil.toJson(data), MediaType.APPLICATION_JSON);//这边是以JSON形式推送给客户端
                        }
                    }
                }, 1000, 3000);
            }
        }.start();
        //endregion

        return sseEmitter;
   }
相关推荐