Вот мой текущий код:
Код: Выделить всё
setupWebSockets() {
const baseConfig = {
url: CONFIG.WS_URL,
...CONFIG.WS_MESSAGE
};
this.tags.forEach(tag => {
const uid =generateUID();
const wsClient = new WebSocketClient(baseConfig.url, {
...baseConfig,
uid,
tag
});
wsClient.setOnMessageCallback((event) => this.handleWebSocketMessage(event, tag));
wsClient.connect();
this.wsClients[tag] = wsClient;
});
}
handleWebSocketMessage(event, tag) {
try {
const receivedData = JSON.parse(event.data);
console.log(`Received WebSocket data for ${tag}:`, receivedData);
if (receivedData.measurements && receivedData.measurements.length > 0) {
const formattedMeasurements = receivedData.measurements.map(measurement => ({
time: this.wsClients[tag].convertTimestamp(measurement.time),
value: measurement.value
}));
this.lineChart.updateData(formattedMeasurements, tag);
}
} catch (error) {
console.error(`Error parsing received message for ${tag}:`, error);
}
}
- Я хочу подключиться к URL-адресу WebSocket () только один раз.
Код: Выделить всё
CONFIG.WS_URL - Мне нужно обрабатывать несколько тегов и uid< /code> и обрабатывать соответствующие сообщения
Проблема
Когда я пытаюсь подключиться к URL-адресу WebSocket только один раз и перебирать теги code>, uid и messages, это не работает как ожидал. Каждому тегу нужен свой уникальный идентификатор и обработка сообщений, но я хочу избежать открытия нескольких соединений WebSocket.
Что я пробовал
Создание одного wsClient и циклическое перебор тегов, но я не смог найти способ связать uid и правильно тегируйте входящие сообщения. - Открытие соединения WebSocket для каждого тега (как показано в коде), что работает, но неэффективно.
Как я могу реструктурировать свой код, чтобы использовать одиночное соединение WebSocket и эффективно обрабатывать сообщения для нескольких тегов, каждый из которых имеет свой собственный uid?
Будем признательны за любые предложения или рекомендации по реализации этого сценария.
Подробнее здесь: https://stackoverflow.com/questions/793 ... t-connecti