19

I want to have two different computers open a static html page, and be able to communicate to each other via WebRTC over a local area network. There is no internet connection to the outside world in this scenario. One of the pcs would be able to enter the ip address of the other pc manually and connect to it using that hardcoded IP. Is an ICE server necessary? If so, does the server itself need internet access to the outside world?

Oved D
  • 7,132
  • 10
  • 47
  • 69

1 Answers1

12

You do not need ICE servers in this case. In general, you have the following ICE candidates normally:

  • host (are generated by the client by binding to its locally assigned IP addresses and port)
  • srflx (server reflex candidates are generated by using STUN)
  • relay (relay candidates are generated by using TURN)

So without ICE servers you will have only host candidates generated which is enough in your case because both users are in the same local network.

Although WebRTC enables peer-to-peer communication, it still needs a server for signaling: to enable the exchange of media and network metadata to bootstrap a peer connection.

So the main problem here is that you need to exchange the “offer” and “answer” between endpoints somehow, so each party will have enough information about each other. Normally, some signaling protocol + public server is used for this purpose.

In your case, you have 3 choices:

  • to setup a direct p2p WebSocket connection between 2 browsers. Not sure if it's possible. Looks like a browser can only connect to other endpoint, not to listen.
  • manually copy\past the 'offer' and 'answer' SDP, which is not good as well I think
  • have some 3rd computer with some signaling server installed, so others peers will use it to exchange the 'offer' and 'answer' between each other
Rubycon
  • 18,156
  • 10
  • 49
  • 70
  • 4
    Good explanation. Here are some open source software you can use to setup something like this. https://openvidu.io/ is built on top of http://www.kurento.org/ . The exmaples are quite easy to follow and you can set it up on one PC to be the "server". You dont neet a 3rd computer in this case. – Luke Kroon Aug 16 '18 at 13:43
  • 1
    You are right - one of the servers can host this 'signaling server' software – Rubycon Aug 16 '18 at 13:46
  • Check also [Coturn](https://github.com/coturn/coturn/), a free open source implementation of TURN and STUN Server. – Pablo Bianchi Apr 11 '23 at 22:07