Socket.IO

Socket.IO

Socket.IO ​

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

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

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

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

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

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

javascript
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);
});

События системы SmartDCIM ​

SmartDCIM использует события 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 |