版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengyekafei/article/details/81387073
https://developer.mozilla.org/en-US/docs/Web/API/EventSource
EventSource
接口是web内容的接口服务器发送的事件。一个EventSource
实例打开一个持久连接HTTP服务器,它发送事件的text/event-stream
格式。连接保持打开状态,直到通过呼叫关闭EventSource.close()
。
打开连接后,来自服务器的传入消息将以message
事件的形式传递给您的代码。
与WebSockets不同,服务器发送的事件是单向的; 也就是说,数据消息是从一个方向传递的,从服务器传送到客户端(例如用户的Web浏览器)。当没有必要以消息形式从客户端向服务器发送数据时,这使它们成为一个很好的选择。例如,EventSource
处理诸如社交媒体状态更新,新闻订阅或将数据传递到客户端存储机制(如IndexedDB或Web存储)之类的内容是一种有用的方法。
构造函数
创建一个新的EventSource
来处理从指定URL接收服务器发送的事件。
属性
此接口还从其父级继承属性EventTarget
。
表示连接状态的数字。可能的值为CONNECTING
(0
),OPEN
(1
)或CLOSED
(2
)。
A DOMString
代表源的URL。
EventSource.withCredentials
只读
A Boolean
指示EventSource
对象是否使用跨源(CORS)凭据set(true
)实例化(或者false
是默认值)。
事件处理程序
是一种EventHandler
发生错误时,被叫error
事件分派的上EventSource
对象。
是EventHandler
在message
收到事件时调用的,即当消息来自源时。
是EventHandler
当被称为open
是接收到的事件,当连接刚刚打开的是。
方法
此接口还从其父级继承方法EventTarget
。
关闭连接(如果有),并将readyState
属性设置为CLOSED
。如果连接已关闭,则该方法不执行任何操作。
实例
<script>if (typeof(EventSource) !== "undefined") {var eventSource = new EventSource("/mes");eventSource.addEventListener('message', function (event) {document.getElementById("result").innerHTML += event.data + "<br />";});eventSource.addEventListener('error', function (event) {console.log("错误:" + event);});eventSource.addEventListener('open', function (event) {console.log("建立连接:" + event);});}else {document.getElementById("result").innerHTML = "抱歉,您的浏览器不支持 server-sent 事件 ...";}</script>
@RestControllerpublic class DemoController {@GetMapping("/mes")public String getMessage() {double num = Math.floor(Math.random() * 10);int time = 3;// 如果能被3整除输出消息if (num % time == 0) {// 默认chrome 3秒 刷一次 可以在返回的 data 前 加上 retry:1000\n 自定义刷新时间return "retry:1000\ndata:" + new Date().toString() + "\n\n";}return "";}}