2017-07-03 86 views
0

我有一個websocket應用程序,通過stomp.js文件連接到我的Java後端。jquery stomp websockets服務器重新連接重新初始化

function connect() { 

      var socket = new SockJS('<?php echo $rootbasename;?>wsconnect'); 
      stompClient = Stomp.over(socket); 
      stompClient.debug = null; 
      stompClient.connect({}, function (frame) { 
       console.log('Connected: ' + frame); 
       console.log('/queue/messages/' + widgetId + "/" + $.cookie(cookiename)); 
       stompClient.subscribe('/queue/messages/' + widgetId + "/" + $.cookie(cookiename), function (result) { 
        //code here 

       }, {userToken: $.cookie(cookiename), widgetId: widgetId}); 

       stompClient.subscribe('/queue/makereadresult/' + widgetId + '/' + $.cookie(cookiename), function (result) { 

}); 

但是,如果我的java後端服務器將重新啓動呢?我希望客戶不要注意到任何改變。有沒有辦法在丟失連接時自動重新連接?或者以任何方式讓客戶流暢起來?

回答

1

當你連接時,你可以通過錯誤回調。在那裏你可以重新連接邏輯。 例如跺腳有這個方法

client.connect(login, passcode, connectCallback, errorCallback); 

和errorCallback只是調用connectCallback。

+0

謝謝,但問題是錯誤回調只觸發一次,但如果我的服務器停機? 5分鐘。我需要它在服務器重新啓動時自動重新連接,但在這種情況下,您的方法不起作用。 – avalon

+0

你可以在錯誤回調中寫任何你想要的東西。你可以使用setInterval方法來嘗試獲取連接並保持連接,直到它連接 – Janar

+0

好的謝謝。但你的答案與鏈接這個線程的接受答案:https://stackoverflow.com/questions/22361917/automatic-reconnect-with-stomp-js-in-node-js-application – avalon