Implementing our own STUN/TURN server for WebRTC Application

Sam Fast picture Sam Fast · Mar 6, 2014 · Viewed 40.5k times · Source

I am working on a webrtc application and have to implement following TURN server.

https://code.google.com/p/rfc5766-turn-server/

I am following this tutorial.

http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

and it says to reference the TURN server as follows, in javascript code where RTCPeerConnection is created.

var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
  {"url":"turn:<turn_server_ip_address>", "username":"my_username", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

I am little confused, why are we referencing to Google's public STUN server. I thought RFC5766 TURN server has STUN inside it.

Is RFC5766 only TURN server? and not STUN server? Can't we implement our own STUN server rather using one provided by Google?

Sorry for such naive question. I am new to WebRTC.

Thanks.

Answer

Rubycon picture Rubycon · Mar 7, 2014

TURN it's an extension of STUN, so TURN server has also STUN features.

https://code.google.com/p/rfc5766-turn-server/ works also as a STUN, so you can try to write something like this:

var pc_config = {"iceServers": [{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);