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 |