转载:http://www.5180it.com/bbs/admin/1/534.html
HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。
Server-Sent 事件 - 单向消息传递
Server-Sent 事件指的是网页自动获取来自服务器的更新。
以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过服务器发送事件,更新能够自动到达。
例子:Facebook/Twitter 更新、估价更新、新的博文、赛事结果等。
浏览器支持
所有主流浏览器均支持服务器发送事件,除了 Internet Explorer。
var source = new EventSource('sse/get_data');
source.onmessage = function (event) {
console.info(event.data);
document.getElementById('result').innerText = event.data
};
EventSource 对象
在上面的例子中,我们使用 onmessage 事件来获取消息。不过还可以使用其他事件:
事件 | 描述 |
---|---|
onopen | 当通往服务器的连接被打开 |
onmessage | 当接收到消息 |
onerror | 当错误发生 |
检测 Server-Sent 事件支持
if(typeof(EventSource)!=="undefined")
SpringBoot2.x服务端主动推送SSE
@RequestMapping(value = "/get_data", produces = "text/event-stream;charset=UTF-8")
public String getData() {
try {
Thread.sleep(1000);
//第三方数据源调用
} catch (InterruptedException e) {
e.printStackTrace();
}
return "最新数据:" + Math.random();
}
需要把response的类型 改为 text/event-stream,才是sse的类型
运行结果如下:
转载:http://www.5180it.com/bbs/admin/1/534.html