Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Информация о потоках, опубликованных в данный момент на узле, в реальном времени может быть получена по протоколу STOMP поверх Websocket API.

Подключение к бэкенд-серверу по STOMP через Websocket

Для подключения к бэкенд-серверу для получения метрик в реальном времени необходимо:

1. Установить Secure Websocket соединение по адресу https://hostname:8090/ws, где hostname – имя бэкенд-сервера

2. Установить соединение по протоколу STOMP, отправив сообщение

CONNECT
accept-version:1.2
host:hostname

^@

3. Подписаться на событие /stream/nodeId/mediaId, отправив сообщение

SUBSCRIBE
id:sub-1
destination:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8

^@

Здесь

15 - идентификатор узла на бэкенде

010934f0-0766-11e9-a950-59983a9de3c8 - идентификатор медиасессии, в которой опубликован или проигрывается поток

4. Подписаться на событие /alarm для получения тревог (см ниже)

SUBSCRIBE
id:sub-0
destination:/alarm

^@

После этого клиент начинает получать STOMP-сообщения вида

"MESSAGE\ndestination:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8\ncontent-type:application/json;charset=UTF-8\nsubscription:sub-1\nmessage-id:oilwo0os-701\ncontent-length:1349\n\n[{\"VIDEO_SYNC\":3754637125197,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":478104,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":30,\"timestamp\":1545648325506},{\"AUDIO_SYNC\":3754637125227,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32616,\"timestamp\":1545648325558,\"AUDIO_LOST\":21},{\"AUDIO_SYNC\":3754637125347,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32960,\"timestamp\":1545648325684,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125397,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":504632,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":31,\"timestamp\":1545648325701},{\"AUDIO_SYNC\":3754637125467,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648325805,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125597,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":495624,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":30,\"timestamp\":1545648325911},{\"AUDIO_SYNC\":3754637125587,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648325921,\"AUDIO_LOST\":21},{\"AUDIO_SYNC\":3754637125707,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32400,\"timestamp\":1545648326049,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125796,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":480224,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":32,\"timestamp\":1545648326104},{\"AUDIO_SYNC\":3754637125827,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648326159,\"AUDIO_LOST\":21}]\u0000"

или, при использовании библиотеки STOMP.js

{
    "command": "MESSAGE",
    "headers": {
        "content-length": "1282",
        "message-id": "oilwo0os-926",
        "subscription": "sub-1",
        "content-type": "application/json;charset=UTF-8",
        "destination": "/stream/15/010934f0-0766-11e9-a950-59983a9de3c8"
    },
    "body": [
        {
            "VIDEO_SYNC": 3754637299170,
            "VIDEO_CODEC": 120,
            "VIDEO_NACK": 20,
            "VIDEO_PLI": 0,
            "VIDEO_RATE": 617024,
            "VIDEO_WIDTH": 320,
            "VIDEO_HEIGHT": 240,
            "VIDEO_FPS": 24,
            "timestamp": 1545648499723
        },
        {
            "AUDIO_SYNC": 3754637299482,
            "AUDIO_CODEC": 111,
            "AUDIO_RATE": 30600,
            "timestamp": 1545648499799,
            "AUDIO_LOST": 23
        },
        ...
    ]
}

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

Для того, чтобы перестать получать метрики потока в реальном времени, необходимо отписаться от данных потока, отправив сообщение

UNSUBSCRIBE
id:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8

^@

Настройка подключения

Максимальное количество метрик в одном сообщении настраивается при помощи параметра в файле wcsoam.properties

stomp_max_metrics=10

Метрики отправляются подписчику, когда число изменившихся метрик достигнет заданного значения. Таким образом, если метрики меняются редко, целесообразно уменьшить данный параметр.

Таймаут соединения настраивается при помощи параметра

stomp_max_timeout=1000
  • No labels