我正在使用没有弹簧安全性的 stomp 和 sockjs 的 spring websockets。当我在浏览器中有一个我的应用程序时,就会建立新的套接字连接,但是当我在同一浏览器中打开另一个选项卡时,它也会创建新的套接字连接。所以我想停止这种行为,并希望它在打开新选项卡时使用相同的连接 ID。这是一个聊天应用程序。使用此博客中的代码:
https://github.com/salmar/spring-websocket-chat
任何人都可以给我工作代码 如何在本地存储中存储连接 n 从本地存储中检索新选项卡中存储的套接字连接?
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));
});
});
}
窗口中的本地存储是上述问题的最简单解决方案。将会话 ID 存储在本地存储对象中,您可以跨其他选项卡进行访问。从对象检索会话 ID 并重用于连接。
例:
localStorage.setItem('sessionId', '123abc');
在其他选项卡中检索相同的对象:
localStorage.getItem("sessionId");
您可以参考以下链接了解如何使用本地存储:https://developer.mozilla.org/en/docs/Web/API/Window/localStorage