服务器推送

服务器推送

  1. ajax 轮询 不建议
  2. websocket 多用于双方复杂数据通讯
  3. sse (server send event) 服务器主动推送
  • h5 新标准
  • 本质是保持一个 http 长连接,轻量级协议

sse 使用

  • html 端
<body>
<script>
    var source = new EventSource("http://127.0.0.1:8080/sse/getInfo");
    source.onmessage = function (ev) {
        console.log(ev.data);
    }
</script>
</body>
  • server 端
    • 注意 返回的数据格式必须为下面这种格式,"data:"+你的数据+" "; "data"还有其他的格式, “data”, “event”, “id”,“retry”
    @RestController
    @RequestMapping("/sse")
    public class SSEController {
        @CrossOrigin
        @RequestMapping(value = "/getInfo", produces = "text/event-stream;charset=UTF-8")
        public String push(){
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 返回的数据格式必须为下面这种格式,"data:"+你的数据+"
    
    ";  "data"还有其他的格式, “data”, “event”, “id”, “retry”
            // 不然onmessage方法无法执行。
            return "data:pushing: " + String.valueOf(System.currentTimeMillis()) + "
    
    ";
        }
    }
    
    
原文地址:https://www.cnblogs.com/scp-166/p/11942157.html