第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

服務(wù)器發(fā)送事件 Golang

服務(wù)器發(fā)送事件 Golang

Go
桃花長(zhǎng)相依 2021-10-18 17:07:29
我想做某種方式的數(shù)據(jù)流,并且正在試驗(yàn) SSE 與 Websockets。使用 SSE 形成 golang 服務(wù)器,我發(fā)現(xiàn)在會(huì)話完成時(shí)如何通知客戶端令人困惑。(例如,服務(wù)器已完成事件發(fā)送或服務(wù)器突然離線或客戶端失去連接)我需要做的一件事是可靠地知道這些斷開連接的情況。不使用超時(shí)等。到目前為止我的實(shí)驗(yàn),當(dāng)我使服務(wù)器脫機(jī)時(shí),客戶端會(huì)獲得 EOF。但是我在試圖弄清楚如何從服務(wù)器向客戶端發(fā)出連接關(guān)閉/完成的信號(hào),然后如何處理/讀取它時(shí)遇到了麻煩?EOF 是確定關(guān)閉/錯(cuò)誤/完成狀態(tài)的可靠方法嗎?許多 SSE 示例未能顯示客戶端良好的客戶端連接處理。使用 Websockets 會(huì)更容易嗎?任何經(jīng)驗(yàn)建議最受贊賞。
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

SSE 標(biāo)準(zhǔn)要求瀏覽器在 N 秒后自動(dòng)重新連接,如果連接丟失或服務(wù)器故意關(guān)閉套接字。(N 在 Firefox 中默認(rèn)為 5,在 Chrome 和 Safari 中默認(rèn)為 3,我上次檢查過(guò)。)所以,如果這是可取的,您不需要做任何事情。(在 WebSockets 中,您必須自己實(shí)現(xiàn)這種重新連接。)


如果那樣的重新連接的是不理想的,則應(yīng)該將消息發(fā)送回客戶端,稱“節(jié)目一結(jié)束,走開”。例如,如果您正在流式傳輸財(cái)務(wù)數(shù)據(jù),您可能會(huì)在周五晚上市場(chǎng)關(guān)閉時(shí)發(fā)送該數(shù)據(jù)。然后,客戶端應(yīng)該攔截此消息并從其一側(cè)關(guān)閉連接。(然后套接字將消失,因此服務(wù)器進(jìn)程將自動(dòng)關(guān)閉。)


在 JavaScript 中,假設(shè)您使用 JSON 發(fā)送數(shù)據(jù),它看起來(lái)像:


var es = EventSource("/datasource");

es.addEventListener("message", function(e){

  var d = JSON.parse(e.data);

  if(d.shutdownRequest){

    es.close();

    es=null;

    //Tell user what just happened.

    }

  else{

    //Normal processing here

    }

  },false);

更新:


您可以通過(guò)偵聽“關(guān)閉”事件,然后查看重新連接的發(fā)生時(shí)間來(lái)了解 e.target.readyState


es.addEventListener("error", handleError, false);

function handleError(e){

  if(e.target.readyState == 0)console.log("Reconnecting...");

  if(e.target.readyState == 2)console.log("Giving up.");

  }

沒有其他信息可用,但更重要的是,它無(wú)法區(qū)分服務(wù)器進(jìn)程故意關(guān)閉連接、Web 服務(wù)器崩潰或客戶端的 Internet 連接中斷。


您可以自定義的另一件事是重試時(shí)間,通過(guò)讓服務(wù)器發(fā)送retry:NN消息。因此,如果您不想快速重新連接,而是希望在任何重新連接嘗試之間至少間隔 60 秒,請(qǐng)執(zhí)行此操作讓您的服務(wù)器發(fā)送retry:60.


查看完整回答
反對(duì) 回復(fù) 2021-10-18
  • 1 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)