MIDI-MT - API Модуля «Панель дистанционного управления»

MIDI-MT Документация на Русском языке

API дистанционного управления

Вы можете самостоятельно использовать «API» модуля дистанционного управления в сценариях в различных средах выполнения. Транспортом взаимодействия с «MIDI-MT» является Web Socket, команды и ответы имеют формат Json. Связь реализована только по протоколу HTTP, то есть поддерживается только стандартный префикс ws://. Решение рассчитано на работу в локальной сети. При необходимости, для доступа по протоколу HTTPS, можно поставить любой фронт-енд с поддержкой HTTPS Web Socket, например nginx.

Запросы клиента

Конечной точкой в URL сервера, всегда является тег /data.

Ответы сервера

Все ответы сервера, так же как и запросы упаковываются в Json контейнер.

Примеры Web Socket приложений

«IP адрес» и «Порт» в приложении должны соответствовать текущей рабочей конфигурации запущенного сервера.

    "remote": {
        "port": 8888,
        "host": "x.x.x.x",
        ...
    },
JavaScript Web Socket
let socket = new WebSocket("ws://x.x.x.x:8888/data");

socket.onopen = function(e) {
  console.log("[open] Connection established, request configuration from server...");
  socket.send(JSON.stringify({ "action": "config" }));
};

socket.onmessage = function(event) {
  console.log("[message]", JSON.parse(event.data));
};

socket.onclose = function(event) {
  if (event.wasClean) {
    alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
  } else {
    // server process killed or network down
    // event.code is usually 1006 in this case
    console.log("[close] Connection died");
  }
};

socket.onerror = function(error) {
  console.log(`[error]`);
};

Посмотреть этот пример на BitBucket.

Подробнее о программировании JavaScript Web Socket на MDN Web docs.

Python Web Socket

Для запуска этого примера, вероятно вам придется установить пакеты:

import websocket
import _thread
import time
import rel

def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### closed ###")

def on_open(ws):
    print("Opened connection")
    ws.send("{ \"action\": \"config\" }")

if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://x.x.x.x:8888/data",
                              on_open=on_open,
                              on_message=on_message,
                              on_error=on_error,
                              on_close=on_close)

ws.run_forever(dispatcher=rel, reconnect=5)
rel.signal(2, rel.abort)
rel.dispatch()  

Посмотреть этот пример на BitBucket.

Подробнее о программировании Python Web Socket в документации websocket-client.