SSE:服務器發送事件,使用長連接進行通信瀏覽器
優勢:服務器
比向服務器發送請求查詢數據更有效率
只能服務器向瀏覽器發送消息
創建在http協議之上,現有的服務器都支持
支持斷線重連
支持自定義發送的數據類型
客戶端的代碼的結構:url
一、檢測是否支持 二、部署SSE 三、設定相應的回調事件code
例如:事件
if(window.EventSource){
var source = new EventSource('http://127.0.0.1')
//必須是同一域下、協議和端口也要相同部署
switch(source.readyState){ case 0: console.log('鏈接還未創建或者鏈接斷線') break; case 1: console.log('鏈接已經創建,能夠接受數據') break; case 2: console.log('鏈接已斷,不會重連') break; } source.onopean = function(){ console.log('鏈接創建,觸發open事件,寫相應的回調') } source.onmessage = function(event){ var data = event.data;//服務器傳回的數據 var orogin = event.origin;//服務器的url域名部分,包含協議、域名和端口 var lastEventId = event.lastEventId;//數據的編號,由服務器端發送,若是沒有編號,屬性爲空 } source.onerror = function(event){ console.log('鏈接中斷') } source.close()
}
數據格式:get
data: message\n data: end\n\n域名
'\n\n'是結束符
id: id是數據標識符,標識已斷數據的開頭,lastEventId就是這個編號
retry: 1000 retry就是最大間隔時間it