日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

给websocket加入心跳包防止自动断开连接

發布時間:2024/1/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给websocket加入心跳包防止自动断开连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
var userId = $("#userId").val(); var lockReconnect = false; //避免ws重復連接 var ws = null; //判斷當前瀏覽器是否支持WebSocket var wsUrl = serverConfig.cyberhouse_ws+userId; createWebSocket(wsUrl); //連接wsfunction createWebSocket(url) {try {if ('WebSocket' in window) {ws = new WebSocket(url);} else if ('MozWebSocket' in window) {ws = new MozWebSocket(url);} else {layui.use(['layer'], function() {var layer = layui.layer;layer.alert("您的瀏覽器不支持websocket的協議,建議使用新版谷歌、火狐等瀏覽器,請勿使用IE10以下瀏覽器,360瀏覽器請使用極速模式,不要使用兼容模式!");});}initEventHandle();} catch(e) {reconnect(url);console.log(e);} }function initEventHandle() {ws.onclose = function() {reconnect(wsUrl);console.log("llws連接關閉!"+new Data().toUTCString());};ws.onerror = function() {reconnect(wsUrl);console.log("llws連接錯誤!");};ws.onopen = function() {heartCheck.reset().start(); //心跳檢測重置console.log("llws連接成功!"+new Data().toUTCString());};ws.onmessage = function(event) {//如果獲得到消息、心跳檢測重置heartCheck.reset().start(); //拿到任何消息都說明當前連接是正常的console.log("llws收到消息啦:"+event.data);if (event.data != 'pong') {var obj = eval("("+event.data+")");layui.use(['layim'], function(layim) {if (obj.type == "onlineStatus") {layim.setFriendStatus(obj.id, obj.content);} else if (obj.type == "friend" || obj.type == "group") {layim.getMessage(obj);}});}}; }//監聽窗口關閉事件,當窗口關閉時,主動去關閉websocket連接,防止連接還沒斷開就關閉窗口,server斷會拋異常 window.onbeforeunload = function() {ws.close(); }function reconnect(url) {if (lockReconnect) return;lockReconnect = true;setTimeout(function() { //沒連接上會一直重連,設置延遲避免請求過多createWebSocket(url);lockReconnect = false;}, 2000); }//心跳檢測 var heartCheck = {timeout: 540000, //9分鐘發一次心跳timeoutObj: null,serverTimeoutObj: null,reset: function() {clearTimeout(this.timeoutObj);clearTimeout(this.serverTimeoutObj);return this;},start: function() {var self = this;this.timeoutObj = setTimeout(function() {//這里發送一個心跳,后端收到后,返回一個心跳消息,//onmessage拿到返回的心跳就說明連接正常ws.send("ping");console.log("ping!");self.serverTimeoutObj = setTimeout(function() {//如果超過一定時間還沒重置,說明后端主動斷開了ws.close(); //如果onclose會執行reconnect,我們執行ws.close()就行了,如果直接執行reconnect會觸發onclose導致重連兩次}, self.timeout)}, this.timeout)} } //收到客戶端消息后調用的方法 @OnMessage public void onMessage(String message, Session session) {if (message.equals("ping")) {} else {...} }

系統發現websocket每隔10分鐘自動斷開連接,搜了很多博客都說設置一下nignx的

keepalive_timeout

proxy_send_timeout

proxy_connect_timeout

proxy_read_timeout

這四個字段的時長即可,然而好像并不生效。遂采取心跳包的方式每隔9分鐘客戶端自動發送ping消息給服務端,服務端不需要返回。即可解決問題。

轉自:https://blog.csdn.net/jkxqj/article/details/77848466

總結

以上是生活随笔為你收集整理的给websocket加入心跳包防止自动断开连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 农村偷人一级超爽毛片 | 久久影院视频 | 日韩美女视频网站 | 欧美大色网 | 777在线视频 | 久久99热这里只频精品6学生 | 欧美一区二区最爽乱淫视频免费看 | 久久依人 | 免费看女生裸体视频 | 日韩久久免费视频 | 麻豆视频精品 | 久久午夜鲁丝片 | 国产亚洲精品电影 | 极品色av影院 | 欧美视频在线观看 | 亚洲s码欧洲m码国产av | 亚洲免费大片 | 国产天堂资源 | 成人黄色小说视频 | 美女露胸软件 | 国产成人免费av | 九九热精品视频在线 | 欧美一级免费片 | 九一av| 亚洲精品在线免费观看视频 | 黑人多p混交群体交乱 | 天天艹夜夜艹 | 亚洲精品久久久久久无码色欲四季 | 国产精品入口麻豆九色 | av网站免费在线观看 | 九九午夜视频 | 免费在线观看中文字幕 | 久草热视频 | 搡老熟女老女人一区二区 | 久久噜噜噜 | 爱情岛成人 | 波多野结衣亚洲一区二区 | 深爱五月激情五月 | 黄色激情在线 | 蜜桃网站| 艳母动漫在线播放 | 精品人伦一区二区三区蜜桃网站 | 香蕉婷婷| 一区二区三区在线免费播放 | 色欲狠狠躁天天躁无码中文字幕 | 人妻av无码一区二区三区 | 欧洲亚洲自拍 | 国产亚洲精品久久久久久久久动漫 | 女人下部全棵看视频 | 欧美乱淫视频 | www.日韩| 深夜福利一区二区三区 | 特级西西人体444www高清 | 欧美精品aaa | 欧美理伦少妇2做爰 | 久久久久久久999 | 午夜大片在线观看 | 邻居校草天天肉我h1v1 | 日韩永久免费 | av成人动漫| 破处视频在线观看 | 亚洲欧美天堂网 | 91看片在线观看 | 国产精品视频合集 | 国产一线二线三线在线观看 | www.-级毛片线天内射视视 | 在线精品视频一区 | av国产一区 | 天天精品视频 | 欧美日韩一区二区三区四区五区六区 | 99热在线观看免费精品 | 久久bb| 国产成人av一区二区三区不卡 | 国产网址在线观看 | 日本99热| 欧美成视频 | 亚洲AV无码国产精品播放在线 | 日本一级淫片免费放 | 亚洲小说区图片区都市 | 看毛片网| 久久综合色婷婷 | 久久久久亚洲精品系列色欲 | 天天插天天射天天干 | 欧美日韩一区二区综合 | 国产亚洲精品美女久久久久 | 奇米在线播放 | 精产国品一区二区三区 | 欧美成人怡红院 | av免费不卡 | av黄| 2019自拍偷拍| 一级空姐毛片 | 日本二区在线观看 | 快射视频网站 | 四虎影视库 | 亚洲一区二区在线播放 | 久久久久久人妻一区二区三区 | 亚洲视频综合 | 香蕉视频在线观看www |