我使用弹簧腹板使用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));
});
});
}
答案 0 :(得分:0)
窗口中的本地存储是解决上述问题的最简单方法。将会话ID存储在本地存储对象中,您可以跨其他选项卡访问。从对象中检索会话ID并重新使用该连接。
示例:
localStorage.setItem('sessionId', '123abc');
使用以下选项在其他选项卡中检索相同的对象:
localStorage.getItem("sessionId");
您可以参考以下链接了解如何使用localStorage: https://developer.mozilla.org/en/docs/Web/API/Window/localStorage