前端WebSocket+SockJS+Stomp實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)刷新

實(shí)時(shí)獲取列表的每條數(shù)據(jù)的狀態(tài),每次請(qǐng)求接口顯然浪費(fèi)資源,所以采用了WebSocket+SockJS+Stomp來(lái)實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)刷新。

直接上例子
html引入

 <script src="http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.min.js"></script>  
 <script src="http://cdn.bootcss.com/stomp.js/2.3.3/stomp.js"></script>  
 <script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>

js

//連接
$scope.connectImportLogs  = function() {
  var socket = new SockJS(WEBSOCKET_URL);   //websocket_url
  stompClient = Stomp.over(socket);
  stompClient.connect({}, function(frame) {
    stompClient.subscribe('/message/queue/notice', function(message){ //接口
      var importLogs = JSON.parse(message.body);  //獲得的數(shù)據(jù)
    });
  });
 }
//發(fā)送
stompClient.send("/app/get_server", {},JSON.stringify({"session_id":sessionId}));
//

2.重連
在使用websocket過(guò)程中,可能會(huì)出現(xiàn)網(wǎng)絡(luò)斷開的情況,比如信號(hào)不好,或者網(wǎng)絡(luò)臨時(shí)性關(guān)閉,這時(shí)候websocket的連接已經(jīng)斷開,而瀏覽器不會(huì)執(zhí)行websocket 的 onclose方法,我們無(wú)法知道是否斷開連接,也就無(wú)法進(jìn)行重連操作。

如果希望websocket連接一直保持,一般在close或者error上綁定重新連接方法。

stompClient.ws.onclose = function () {
     connect();
}
stompClient.ws.onerror = function () {
     connect();
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容