使用stomp和sockjs的spring websockets在打开新选项卡时创建新连接

时间:2017-05-13 02:24:34

标签: spring websocket stomp sockjs

我使用弹簧腹板使用stomp和sockjs没有弹簧安全。当我在浏览器中有一个我的应用程序,然后建立新的套接字连接,但是当我在同一个浏览器中打开另一个选项卡时,它也会创建新的套接字连接。所以我想要停止此行为并希望它使用相同的连接ID打开新标签。它是一个聊天应用程序。使用此博客的代码:

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));
                });
            });
        }

1 个答案:

答案 0 :(得分:0)

窗口中的本地存储是解决上述问题的最简单方法。将会话ID存储在本地存储对象中,您可以跨其他选项卡访问。从对象中检索会话ID并重新使用该连接。

示例:

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

使用以下选项在其他选项卡中检索相同的对象:

localStorage.getItem("sessionId");

您可以参考以下链接了解如何使用localStorage: https://developer.mozilla.org/en/docs/Web/API/Window/localStorage