mirror of https://github.com/sipwise/rtpengine.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.4 KiB
52 lines
2.4 KiB
# 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`.
|