2017-05-13 44 views
0

我使用彈簧websockets使用stomp和sockjs而沒有彈簧安全性。當我有一個我的應用程序在瀏覽器中,然後建立新的套接字連接,但是當我在同一瀏覽器中打開另一個選項卡時,它也創建新的套接字連接。所以我想停止此行爲並希望它使用相同的連接ID從這個博客開闢了新tab.Its聊天app.Using代碼:使用stomp和sockjs的彈簧websockets在打開新標籤時創建新連接

https://github.com/salmar/spring-websocket-chat

誰能給我工作的代碼如何存儲的localStorage的連接n檢索的localStorage在新標籤中存儲的套接字連接?

  function connect() { 
      var socket = new SockJS('/spring-mvc-java/chat'); 
      stompClient = Stomp.over(socket); 
      stompClient.connect({}, function(frame) { 

       console.log('Connected: ' + frame); 
       stompClient.subscribe('/topic/messages', function(messageOutput) { 
        showMessageOutput(JSON.parse(messageOutput.body)); 
       }); 
      }); 
     } 
+0

您需要存儲該連接ID,以便可以跨標籤共享。 LocalStorage是最簡單的解決方案。 – 11thdimension

+0

可以嗎?請給我提供任何示例鏈接? – javaquest

+0

好吧,假設你有連接id'id_1',那麼你可以使用'localStorage.setItem('conId','id_1')'將它存儲在LocalStorage中,以在另一個選項卡中獲得這個ID,你可以使用'localStorage.getItem ( 'conId')'。使用這個ID你將不得不使用這個保存的連接ID在選項卡中打開新的WebSocket連接。 – 11thdimension

回答

0

窗口中的本地存儲是最簡單的解決上述問題的方法。將會話標識存儲在本地存儲對象中,並可以跨其他標籤訪問。從對象中檢索會話標識並重新用於連接。

例子:

localStorage.setItem('sessionId', '123abc'); 

檢索其他選項卡相同的對象有:

localStorage.getItem("sessionId"); 

您可以參考以下鏈接瞭解如何使用localStorage的: https://developer.mozilla.org/en/docs/Web/API/Window/localStorage

+0

你可以提供我的代碼,請使用套接字連接 – javaquest

+0

請參閱:http://www.baeldung.com/websockets-spring –

+0

即時通訊已經使用該代碼,http://www.baeldung.com/websockets-spring我不c這個例子中的localstorage東西 – javaquest

相關問題