Я работаю с WebSockets и пытаюсь дублировать соединение WebSocket с веб -сайта. он бросает ошибку и останавливается. Мой код воссоединяется, и он снова работает. Подключение оригинального сайта никогда не заканчивается часами, днями, ... начало отключения шахты через 10-15 минут, затем мне придется воссоединиться. Принят сервером, но мой код вынужден 1.1. Если вы хотите проверить файлы JS, которые оригинальный сайт использует для установления и поддержания соединения WSS, дайте мне знать. < /P>
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();
});
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-header
WebSocket с использованием Stomp возвращается к V1.1, хотя 1.2 определяется в заголовке ⇐ Html
Программисты Html
1739316284
Anonymous
Я работаю с WebSockets и пытаюсь дублировать соединение WebSocket с веб -сайта. он бросает ошибку и останавливается. Мой код воссоединяется, и он снова работает. Подключение оригинального сайта никогда не заканчивается часами, днями, ... начало отключения шахты через 10-15 минут, затем мне придется воссоединиться. Принят сервером, но мой код вынужден 1.1. Если вы хотите проверить файлы JS, которые оригинальный сайт использует для установления и поддержания соединения WSS, дайте мне знать. < /P>
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();
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79431547/websocket-using-stomp-reverts-to-v1-1-even-though-1-2-defined-in-header[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия