31 lines
720 B
Markdown
31 lines
720 B
Markdown
relay_server
|
|
=====
|
|
|
|
An OTP application with an esockd-based UDP server.
|
|
|
|
Build
|
|
-----
|
|
|
|
$ rebar3 compile
|
|
|
|
Run
|
|
---
|
|
|
|
$ rebar3 shell
|
|
|
|
The UDP listener is configured in `config/sys.config` and listens on port `16380`
|
|
by default. It accepts RelayKit UDP relay frames.
|
|
|
|
Protocol
|
|
--------
|
|
|
|
Each UDP datagram is one `RKP1` frame:
|
|
|
|
magic(4) = "RKP1", version(1) = 1, type(1), reserved(2),
|
|
stream_id(8), payload_len(4), payload(payload_len)
|
|
|
|
Frame types are `open = 1`, `data = 2`, `close = 3`, and `error = 4`.
|
|
`open` payload is RelayKit JSON: `host`, `port`, `useTLS`, and `method`.
|
|
The server is a transparent TCP relay: `useTLS` is parsed for client
|
|
compatibility, but the upstream connection is always raw TCP.
|