|
@@ -389,35 +389,60 @@
|
|
|
}
|
|
|
|
|
|
//TODO sse测试
|
|
|
- const clientId = 'uniqueClientId123'; // This should be unique for each client
|
|
|
- const eventSource = new EventSource("/sse/subscribe?clientId="+clientId+"&reqid="+sessionId);
|
|
|
- for (let i = 0; i < 0; i++) {
|
|
|
- let eventSourceNNN = new EventSource("/sse/subscribe?clientId="+clientId+"&reqid="+sessionId);
|
|
|
- console.log("重连次数:"+i);
|
|
|
- }
|
|
|
- eventSource.onmessage = function(event) {
|
|
|
- const newElement = document.createElement("div");
|
|
|
- newElement.textContent = "Message: "+event.data;
|
|
|
- console.log(newElement.textContent);
|
|
|
- };
|
|
|
+ const clientId = 'uniqueClientId123'+"___"+sessionId;
|
|
|
+ let reconnectAttempts = 0;
|
|
|
+ const maxReconnectAttempts = 5;
|
|
|
+ const reconnectDelay = 2000; // 2秒
|
|
|
+
|
|
|
+ let eventSource = null;
|
|
|
+ let reconnecting = false; // 防止重入
|
|
|
+
|
|
|
+ function connect() {
|
|
|
+ if (eventSource) {
|
|
|
+ eventSource.close();
|
|
|
+ eventSource = null;
|
|
|
+ }
|
|
|
+ reconnecting = false;
|
|
|
+ eventSource = new EventSource("/sse/subscribe?clientId="+clientId+"&"+"reqid="+sessionId);
|
|
|
+
|
|
|
+ eventSource.onopen = function() {
|
|
|
+ console.log('SSE连接已建立');
|
|
|
+ reconnectAttempts = 0; // 成功后重置重连次数
|
|
|
+ };
|
|
|
|
|
|
- eventSource.addEventListener('heart', function(event) {
|
|
|
- const newElement = document.createElement("div");
|
|
|
- newElement.textContent = "Logout Event:"+event.data;
|
|
|
- console.log(newElement.textContent);
|
|
|
- }, false);
|
|
|
+ eventSource.onmessage = function(event) {
|
|
|
+ console.log("Message: " + event.data);
|
|
|
+ };
|
|
|
|
|
|
- eventSource.addEventListener('logout', function(event) {
|
|
|
- const newElement = document.createElement("div");
|
|
|
- newElement.textContent = "Logout Event:"+event.data;
|
|
|
- console.log(newElement.textContent);
|
|
|
- }, false);
|
|
|
+ eventSource.addEventListener('heart', function(event) {
|
|
|
+ console.log("Heart Event: " + event.data);
|
|
|
+ });
|
|
|
+
|
|
|
+ eventSource.addEventListener('logout', function(event) {
|
|
|
+ console.log("Logout Event: " + event.data);
|
|
|
+ // 收到踢出时可以断开、并选择重连
|
|
|
+ eventSource.close();
|
|
|
+ // 可选:重连
|
|
|
+ setTimeout(connect, reconnectDelay);
|
|
|
+ });
|
|
|
+
|
|
|
+ eventSource.onerror = function(event) {
|
|
|
+ if (reconnecting) return;
|
|
|
+ reconnecting = true; // 防止多次触发
|
|
|
+ console.log("An error occurred! 尝试重连...");
|
|
|
+ // 正常关闭当前连接
|
|
|
+ eventSource.close();
|
|
|
+ if (reconnectAttempts < maxReconnectAttempts) {
|
|
|
+ reconnectAttempts++;
|
|
|
+ setTimeout(connect, reconnectDelay);
|
|
|
+ } else {
|
|
|
+ console.error('已达最大重连次数,停止重连');
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
|
|
|
- eventSource.onerror = function() {
|
|
|
- const newElement = document.createElement("div");
|
|
|
- newElement.textContent = "An error occurred!";
|
|
|
- console.log(newElement.textContent);
|
|
|
- };
|
|
|
+ // 初始连接
|
|
|
+ connect();
|
|
|
</script>
|
|
|
</body>
|
|
|
</html>
|