WebSocket mit Stomp kehrt auf v1.1 zurück, obwohl 1.2 im Header definiert istHTML

HTML-Programmierer
Anonymous
 WebSocket mit Stomp kehrt auf v1.1 zurück, obwohl 1.2 im Header definiert ist

Post by Anonymous »

Ich arbeite mit WebSockets und versuche, eine WebSocket -Verbindung von einer Website zu duplizieren. Es wirft einen Fehler aus und stoppt. Mein Code verbindet sich wieder und es funktioniert wieder. Die Verbindung der ursprünglichen Site endet nie stundenlang, Tage, ... Mein Start nach 10-15 Minuten dann muss ich wieder verbinden. vom Server akzeptiert, aber mein Code wird vom Server auf 1.1 gezwungen. < /p>
Ideen? Wenn Sie die JS -Dateien inspizieren möchten, die die ursprüngliche Site zum Erstellen und Verwalten der WSS -Verbindung verwendet, lassen Sie es mich wissen. < /P>

Code: Select all

 
   





    document.addEventListener('DOMContentLoaded', () => {
        const baseUrl = 'https://pe-dingdong.nio.com/pe/dingdong/msg';

        let sock = null;
        let stompClient = null;
        let reconnectTimeout = null;
        let connectionAttempts = 0;
        const MAX_RECONNECT_ATTEMPTS = 10; // Prevent infinite reconnect loops

       function connectWebSocket() {
            if (sock && sock.readyState !== SockJS.CLOSED) {
                console.log("WebSocket already connected or connecting...");
                return;
            }

            if (connectionAttempts >= MAX_RECONNECT_ATTEMPTS) {
                console.error("Max reconnect attempts reached. Stopping further reconnects.");
                return;
            }

            console.log("Connecting to WebSocket...");
            connectionAttempts++;

            sock = new SockJS(baseUrl);
            stompClient = Stomp.over(sock);

            // Disable debug logging
            stompClient.debug = console.log;

            const headers = {
                'accept-version': '1.2', // Explicitly request STOMP version 1.2
                'heart-beat': '5000,5000' // Heartbeat every 5 seconds
            };

            stompClient.heartbeat.outgoing = 5000;
            stompClient.heartbeat.incoming = 5000;

            // Override default STOMP connect method to ensure headers are respected
            stompClient._connectHeaders = headers;

            stompClient.connect(headers, onConnect, onError);

            sock.onclose = function() {
                console.warn('WebSocket closed at', new Date().toISOString());
            };
        }

        function onConnect(frame) {
            console.log('Connected to WebSocket with STOMP version:', frame.headers.version);

            if (frame.headers.version !== "1.2") {
                console.warn("Warning: Server connected with STOMP version", frame.headers.version, "instead of 1.2");
            }

            // Reset connection attempts on successful connection
            connectionAttempts = 0;

            // Subscribe
            stompClient.subscribe('/room/h5/charge-map', onMessageReceived);

            // Clear previous reconnect attempts
            if (reconnectTimeout) {
                clearTimeout(reconnectTimeout);
                reconnectTimeout = null;
            }
        }

        function onError(error) {
            console.error('WebSocket error:', error);

            if (error.command === "ERROR") {
                console.warn("Received STOMP ERROR frame:", error.body || "No details provided.");
                return;
            }

            if (stompClient) {
                stompClient.disconnect(() => {
                    console.log('Disconnected. Reconnecting in 5 seconds...');
                    reconnectTimeout = setTimeout(connectWebSocket, 5000);
                });
            } else {
                reconnectTimeout = setTimeout(connectWebSocket, 5000);
            }
        }

        function onMessageReceived(payload) {
            try {
                //const message = JSON.parse(payload.body);
                //console.log(message);
            } catch (err) {
                console.error("Error processing WebSocket message:", err);
            }
        }

        connectWebSocket();
    });




Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post