sourcey / libsourcey

C++14 evented IO libraries for high performance networking and media based applications
https://sourcey.com/libsourcey
GNU Lesser General Public License v2.1
1.31k stars 344 forks source link

STUN Implementation #272

Open Scraft opened 5 years ago

Scraft commented 5 years ago

I am looking for the smallest client-side library for establishing a STUN connection between two peers. I already have a messaging server, and already have a TURN style fallback for when STUN cannot be established. However, it isn't clear to me whether libsourcey provides a simple way to make the STUN attempt? I am looking for something along the line of:

stun-server.cpp // implementation of a server which facilitates with connecting peers

stun-client.cpp // peer A. make an offer via messaging server. // peer B. accept the offer and send the answer via messaging server. // peer A. make connection attempt via stun-server // peer B. make connection attempt via stun-server // .... // peer A + peer B. either establish a connection or know STUN isn't possible

It sounds like there used to be a full ICE example, and also there is talk that any ICE stuff now is done via WebRTC. I wish to deploy on devices where build size and runtime code footprint is somewhat important, so I would love to avoid having huge dependencies to achieve a STUN connection between peers.

If libsourcey doesn't provide a STUN only solution but does provide a full ICE solution (outside of WebRTC) I'd also be interested in that as a starting point. Right now it seems like a bit of a minefield for being able to just connect two peers.