WebSocket: доставка событий и все команды шины по одному соединению — публикация, подписка, подтверждения, ping.
Команды — запросы с ответом: клиент шлёт {"cmd", "params", "request_id"},
шина отвечает кадром с тем же request_id (publish_result,
subscribe_result, ack_result, ошибка). Ожидающие ответа запросы держит
процесс сокета; вызывающий ждёт свой ответ (request/4). Оборвалось
соединение — все ожидающие сразу получают {:error, :disconnected}, а не
ждут таймаута.
Шина до /v1 не ставит request_id в ответ на ping — такой pong
отдаётся самому раннему ожидающему ping.
Summary
Functions
Подключиться и познакомиться: {:ok, pid, api}, где api — клиентский API,
о котором договорились в hello (0 — шина без hello, прежние формы).
Команда шине и её ответ: {:ok, кадр-ответ} или {:error, %LogDB.Error{}}
с кодом :timeout или :disconnected. Вызывается из любого процесса.
Functions
Подключиться и познакомиться: {:ok, pid, api}, где api — клиентский API,
о котором договорились в hello (0 — шина без hello, прежние формы).
Команда шине и её ответ: {:ok, кадр-ответ} или {:error, %LogDB.Error{}}
с кодом :timeout или :disconnected. Вызывается из любого процесса.