Как перебирать теги и сообщения, сохраняя одно соединение WebSocket?Javascript

Форум по Javascript
Ответить
Anonymous
 Как перебирать теги и сообщения, сохраняя одно соединение WebSocket?

Сообщение Anonymous »

Я пытаюсь настроить соединения WebSocket таким образом, чтобы я подключался к URL-адресу WebSocket только один раз и перебирал свои теги, uid и сообщения. Однако моя текущая реализация не работает должным образом.
Вот мой текущий код:

Код: Выделить всё

 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»