On start, ice‑client (your browser) fetches ice‑configuration from server cydev/web
(which handles both STUN with gortc/stun and
creates new RTCPeerConnection and gathers ice‑candidates via binding requests to server.
Server saves received packet as
stun.Message before responding with binding response.
Then ice‑client creates ice‑offer and sends it to web server.
Server parses ice‑offer as
stun.Session and every ice‑candidate in it
ernado/ice. For server‑reflexive candidates
go get -u github.com/gortc/stun/cmd/stun-decode
to decode raw STUN messages.
// TODO(ar): visualise client-server interaction