SSE:服務器發送事件,使用長連接進行通信

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

相關文章
相關標籤/搜索