Socket.IO

Центральный Пульт использует библиотеку Socket.IO v4.5.0 для реализации Comet сервера.

Socket.IO реализует двунаправленное соединение между клиентом и сервером Центрального Пульта с низкой задержкой основанное на событиях.

Несмотря на то что Socket.IO работает по протоколу WebSocket для передачи сообщений (когда это возможно), он добавляет дополнительные метаданные к каждому пакету. Клиент WebSocket не сможет подключиться к серверу Socket.IO и наоборот, клиент Socket.IO не сможет подключиться к обычному серверу WebSocket.

Подключение к серверу

Чтобы подключиться к серверу Socket.IO, используйте пакет socket.io-client.

В этом примере клиент Socket.IO подключается к серверу Центрального Пульта, подписывается на событие Авария, и выводит информацию о каждой аварии, которая произошла в системе.

const comet = require('socket.io-client');

// Comet settings
const COMET_CONNECT_TIMEOUT = 5000;
const sessionId = "..."
const conf = {
    cometHost: 'https://example.com',
    cometPort: '1234',
};

// Connect to a comet server
const url = `${conf.cometHost}` + (conf.cometPort ? `:${conf.cometPort}` : '');
const cn = comet.connect(url, {
    query: { forceNew: true, sessionId },
    timeout: COMET_CONNECT_TIMEOUT,
});

// Subscribe to an Incidents topic
cn.emit('add-topics', 'incidents');

// Handle server response
cn.on('incidents', msg => {
    console.log(msg);
});

События Центрального Пульта

Центральный Пульт использует события Socket.IO для отправки сообщений об обновлении частей системы клиентам в реальном времени.

Каждое событие соответствует внутреннему топику Kafka.

Событие Описание Топик Kafka

bulk-finished

Событие, которое срабатывает при окончании групповой операции.

SERVER_EVENT

custom-style-change

Событие, которое срабатывает, когда пользователь изменяет отображение сущности в пользовательском интерфейсе.

 — 

custom-server-event *

Событие, которое срабатывает при получении данных от серверного расширения.

* Название события определяется серверным расширением.

SERVER_EVENT

client-notification

Событие, которое срабатывает, когда клиент получает уведомление.

CLIENT_EVENT

error

Событие, которое срабатывает при ошибке подключения к Comet серверу.

 — 

incidents

Событие, которое срабатывает Fires when an incident occurs, changes or moves from active list to history.

INCIDENT

incident-count

Событие, которое срабатывает, когда меняется количество активных аварий.

INCIDENT

job-added

Это событие срабатывает каждый раз когда создаётся работа при выполнении операции.

SERVER_EVENT

job-result-received

Событие, которое срабатывает, когда сервер получает результаты работы.

SERVER_EVENT

mqtt

Подписаться на MQTT сообщения.

SERVER_EVENT

model-changed

Событие, которое срабатывает, когда пользователь добавляет, изменяет или удаляет Объект или Связь.

MODEL_EVENT

stat

Событие, которое срабатывает, когда у заданной сущности обновляются данные мониторинга.

ENTITY_STAT

state-change

Событие, которое срабатывает при изменении состояния сущности.

ENTITY_STATE

snmp-trap

Подписаться на SNMP трапы.

SERVER_EVENT