LogDB.Client.Transport.WebSocket (logdb_client v0.3.0)

Copy Markdown View Source

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

build_connection_link(config)

open(config)

Подключиться и познакомиться: {:ok, pid, api}, где api — клиентский API, о котором договорились в hello (0 — шина без hello, прежние формы).

request(pid, cmd, params, timeout \\ 15000)

Команда шине и её ответ: {:ok, кадр-ответ} или {:error, %LogDB.Error{}} с кодом :timeout или :disconnected. Вызывается из любого процесса.