spring-websocket --WebSocketStompClient端實現自動重連
轉自https://blog.csdn.net/u013174217/article/details/53376793
websocketstompclient端實現和服務端建立連線和通訊之後,如果服務端斷開或重啟,client端需要實現自動定時重連機制。
查閱了官網和一些資料沒有找到相關的原始碼,自己寫了個:
在client端重寫StompSessionHandlerAdapter的類中重寫handleTransportError方法:
- @Override
- publicvoid handleTransportError(StompSession session, Throwable exception) {
- if
- // if connection lost, call this
- isConnected = false;
- while (!isConnected) try {
- Thread.sleep(5000);
- //new connect--start
- WebSocketClient webSocketClient = new SockJsClient(transports);
- WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
- stompClient.setInboundMessageSizeLimit(size);
- stompClient.setMessageConverter(new MappingJackson2MessageConverter());
- stompClient.setTaskScheduler(new DefaultManagedTaskScheduler());
- stompClient.connect(url, wsHeaders, sessionHandler);
- //new connect--end
- isConnected = true;
- } catch (Exception e) {
- logger.error("error {}", e.getMessage());
- }
- }
- }
程式碼解釋:WebSocketStompClient的connect失敗後會被這個方法捕獲並處理,此處捕獲ConnectionLostException錯誤,則每隔5秒重新建立連線。
建立connect即new connect的程式碼區域為建立client連線的地方,需要根據程式碼情況自己修改。
執行之後服務端斷開,client端會每隔5s發起一次連線,連線失敗則報錯。如果服務端啟動後,client端則會正常連線成功。
以上這種方法,並不是一種很好的方法,
更好的是
ListenableFuture<StompSession> future = stompClient.connect(url, logHandler); try { session = future.get(); session.setAutoReceipt(true); } catch (Exception e) { e.printStackTrace(); }
每隔2秒鐘,boolean connected = session.isConnected();
如果為false就,重新呼叫一次connect
相關推薦
spring-websocket --WebSocketStompClient端實現自動重連
轉自https://blog.csdn.net/u013174217/article/details/53376793websocketstompclient端實現和服務端建立連線和通訊之後,如果服務端斷開或重啟,client端需要實現自動定時重連機制。查閱了官網和一些資料沒
微信小程式 實現websocket長連線 以及斷開連線之後自動重連
app.js let socketMsgQueue = [] let isLoading = false App({ globalData: { userInfo: null, localSocket: {}, callback: function () {} },
WebSocket的心跳檢測和重連和Spring的整合
最近搞好論文,對其中的WebSocket中相對比較實用的技術做一個總結,這個東西之前是用來作前後臺的監控資料的實時通訊,主要記錄一下心跳包和重連的過程,websocket中的心跳這裡是通過客戶端定義一個定時器實現,主要程式碼如下: //心跳檢測,每20s心跳一次 v
Java NIO SocketChannel客戶端例子(支援連線失敗後自動重連)
這兩天想找找標題裡說的這個示例程式碼,發現網上這麼多教程,連怎麼樣實現自動重連都不講,所以把自己寫的例子貼上來。僅僅使用遞迴,不使用多執行緒,就可以實現初步的目的: import java.io.IOException; import java.net.ConnectExc
JavaScript實現H5遊戲斷線自動重連的技術
斷線重連的需求 尤其是手機上,會因為網路的不穩定或者其他原因,導致使用者的socket連結斷開。這個時候如果直接讓玩家退出遊戲,重新登入,無疑是非常影響使用者體驗的事情。所以根據這個需求,就有需要程式來實現斷線後自動重連回去的技術,是使用者能夠再次快速開始遊戲
Jboss數據庫連接斷開自動重連
jbossJboss默認配置是數據庫連接端口後,服務就會出現異常,無法訪問,此時必須重啟Jboss服務才能重新連接上數據庫。在jboss/server/defult/deploy/oracle-ds.xml中加入:<new-connection-sql>select 1 from dual<
[轉]樹莓派.設置自動重連WiFi
system init.d defaults href ans start class ati call 由於不可知的原因,有可能會導致樹莓派失去連接,這時候需要重新連接WiFi。 自動重連的原理是,定期查看是否斷網,如果斷網了重啟WiFi,參考的文章是這篇,第一步略有修
使用Spring Boot開發者工具進行自動重啟和頁面自動刷新
spring spring boot spring boot開發者工具 spring boot自動重啟 簡介 大家可能都聽說過開發Node.js應用時可以使用多種工具對開發者提供便利,如WebPack提供了開發者服務器來支持js應用動態更替,並在保存文件時自動刷新瀏覽器。Spring Boot
TCP自動重連
list save Coding locale [] ext eat blocking one 網上模板: public class Socket_wrapper { public static Socket theSocket = nul
spring websocket 和socketjs實現單聊群聊,廣播的消息推送詳解
退出 rec oid -name 返回 classes sockets 們的 tomcat7.0 spring websocket 和socketjs實現單聊群聊,廣播的消息推送詳解 WebSocket簡單介紹 隨著互聯網的發展,傳統的HTTP協議已經很難滿足Web應用
Keepalived實現心跳檢測實現自動重啟
專案中伺服器如果發生宕機:1、故障轉移 2、心跳檢測 3、負載均衡 4、自動重啟 心跳檢測: 心跳檢測指令碼: 寫入nginx_check.sh指令碼 vi /etc/keepalived/nginx_check.sh #!/bin/bashA=`
PHP連線MySql閃斷自動重連的方法
使用php作為後臺執行程式(例如簡訊群發),在cli模式下執行php,php需要連線mysql迴圈執行資料庫處理。 當mysql連線閃斷時,之後迴圈的執行將會失敗。 我們需要設計一個方法,當mysql閃斷時,可以自動重新連線,使後面的程式可以正常執行下去。 1.建立測試資料表 CREATE&nbs
【HP-Socket沉思錄】在 OnClose 中自動重連
HP-Socket 版本 5.3.2 其實這裡是取了個巧,因為並不是真正意義上的在 OnClose 中。由於同一個連線的事件是序列的,所以 OnClose 事件不完成 socket 的狀態始終懸置。 可以在 OnClose 中
Spring Websocket+SockJS+STOMP實現即時通訊(零)—— 要點
Spring Websocket+SockJS+STOMP 實現即時通訊(一)—— 疑問解答 Spring Websocket+SockJS+STOMP 實現即時通訊(二)—— 簡單的訊息代理 Spr
Spring Websocket+SockJS+STOMP 實現即時通訊(三)—— ChannelInterceptor與ExecutorChannelInterceptor
ChannelInterceptor: Message被髮送到執行緒池,在傳送動作執行前(後)攔截,發生在當前執行緒。 ExecutorChannelInterceptor: Message被髮送到執行緒池後,線上程池持有的新執行緒中,在Message
Spring Websocket+SockJS+STOMP 實現即時通訊(四)—— MessageChannel
兩種MessageChannel實現 TemporaryReplyChannel 用於接收單個回覆訊息的臨時通道。在整個斷點除錯過程中沒有追蹤到,所以在這裡不詳細說明。 ExecutorSubscribableChannel 正如字面上所表示的這樣Ex
藍芽自動重連
1利用系統中的自動重連 getDevice().connectGatt(context, autoConnect, coreGattCallback); private BleGattCal
php-fpm容易假死,實現自動重啟php服務的指令碼 通過後
通過後臺一直執行,檢測有問題就重啟。指令碼程式碼很少,語句很簡單,消耗系統資源非常低,可以試試。 感覺挺笨的方法,不過有效,呵呵~ #!/bin/bash #check php-fpm server up/down TelLog=/tmp/telphp.log while : do sleep 15
Spring Websocket+SockJS+STOMP 實現即時通訊(六)—— SubProtocolWebSocketHandler
目錄 WebsocketHandler SubProtocolWebSocketHandler 四個重要成員變數 protocolHandlerLookup 子協議
Spring Websocket+SockJS+STOMP 實現即時通訊(四)—— MessageHandler
目錄 MessageHandler的作用 MessageHandler實現類 兩類MessageHandler有什麼區別? MessageHandler的作用 上一節中我們提到過,E