HTTP/WebSocket support
If enabled in the config, rtpengine can handle requests made to it via HTTP, HTTPS, or WebSocket (WS or WSS) connections. The supported HTTP URIs and WebSocket subprotocols are described below.
Dummy Test Interfaces
For HTTP and HTTPS, the URI /ping
is provided, which simply responds with
pong
if requested via GET
. For WebSockets, the subprotocol
echo.rtpengine.com
is provided, which simply echoes back any messages that
are sent to it.
CLI Interface
This interface supports the same commands as the CLI tool rtpengine-ctl
that
comes packaged with rtpengine
. For HTTP and HTTPS, the command is appended to
the URI base /cli/
and the request is made via GET
, with spaces replaced by
plus signs as required by HTTP (e.g. GET /cli/list+totals
). For WebSockets,
the subprotocol is cli.rtpengine.com
and each WebSocket message corresponds
to one CLI command and produces one message in response. The format of each
response is exactly the same as produced by the CLI tool rtpengine-ctl
and
therefore meant for plain text representation.
ng Protocol Interface
This interface can be used to send and receive ng protocol messages over HTTP or WebSocket connections instead of plain UDP.
For HTTP and HTTPS, the URI /ng
is used, with the request being made by
POST
and the content-type set to application/x-rtpengine-ng
. The message
body must be in the same format as the body of an UDP-based ng message and
must therefore consist of a unique cookie string, followed by a single space,
followed by the message in bencode format or JSON format. Likewise, the
response will be in the same format, including the unique cookie.
For WebSockets, the subprotocol ng.rtpengine.com
is used and the protocol
follows the same format. Messages must consist of a unique cookie and a string
in bencode format or JSON format, and responses will also be in the same
format.
Additionally the URI /ng-plain
and the WebSocket subprotocol
ng-plain.rtpengine.com
are supported, which operate identical to what is
described above except that they carry ng protocol messages without the
unique cookie. In other words, each payload is just a plain bencode
dictionary or a JSON object. Therefore the content-type application/json
can also be used for HTTP POST
.
Prometheus Stats Exporter
The Prometheus metrics can be found under the URI /metrics
.