webrtc

¿Puedo simplificar la señalización WebRTC para computadoras en la misma red privada?



(2)

STUN / TURN es diferente de la señalización. STUN / TURN en WebRTC se utilizan para reunir candidatos de ICE. La señalización se utiliza para transmitir entre estas dos PC la descripción de la sesión (oferta y respuesta). Puede usar el servidor STUN gratuito (como stun.l.google.com o stun.services.mozilla.org ). También hay servidores TURN gratuitos, pero no muchos (estos son recursos caros). Uno es numb.vigenie.ca .

Ahora no hay un servidor de señalización, porque estos son personalizados y se pueden hacer de muchas maneras. Aquí hay un article que escribí. Terminé usando Stomp ahora en el lado del cliente y Spring en el lado del servidor.

Supongo que puede manipular SDP e inyectar estáticamente a los candidatos de ICE, pero de todos modos necesitará intercambiar SDP (y eso se genera dinámicamente en cada sesión) entre estas dos PC. Aunque, teniendo en cuenta que la configuración no cambiará, supongo que puede cambiarla una vez (a través de copiar y pegar :)), almacenarla en algún lugar y usarla siempre.

La señalización de WebRTC me está volviendo loco. Mi caso de uso es bastante simple: un intercomunicador de audio bidireccional entre un quiosco y una aplicación web de sala de control. Ambas computadoras están en la misma red. Tampoco tiene acceso a Internet, todas las máquinas tienen IP estáticas conocidas.

Todo lo que leo quiere que use servidores STUN / TURN / ICE. Las siglas para esto son infinitas, contribuyen a mi migraña, pero si se tratara de una aplicación estándar, simplemente abriría un puerto, se lo diría al otro cliente (puedo hacerlo a través de la aplicación web si es necesario) y tener el otro conectar.

¿Puedo hacer esto con WebRTC? ¿Sin ejecutar una docena de servidores de señalización?

En aras de los ejemplos, ¿cómo conectaría un navegador que se ejecuta en 192.168.0.101 a uno que se ejecuta en 192.168.0.102?


Si sus puntos finales tienen IP estáticas, puede ignorar STUN, TURN e ICE, que son solo herramientas eléctricas para perforar agujeros en los firewalls. La mayoría de la gente no tiene tanta suerte.

Debido a la estructura de WebRTC, los puntos finales necesitan una forma de intercambiar información de configuración de llamadas (SDP) como puertos de medios e información clave con anticipación. La forma en que obtiene esa información de A a B y de regreso a A, depende completamente de usted ("servidor de señalización" es solo una palabra elegante para esto), pero la mayoría de las personas usan algo como un servidor de socket web, el tic-tac-toe de comunicación iniciada por el cliente.

Creo que la forma más sencilla de hacer que esto funcione en una red privada sin conexión a Internet es instalar un servidor de socket web básico en una de las máquinas.

Como ejemplo, recomiendo el muy simple https://github.com/emannion/webrtc-web-socket que funcionó en mi red privada sin conexión a Internet.

Siga las instrucciones para instalar el servidor de socket web en, por ejemplo, 192.168.1.101, luego haga que ambos puntos finales se conecten a 192.168.0.101:1337 con Chrome o Firefox. Comparta la cámara en ambos extremos en la interfaz de usuario web de demostración básica, presione Conectar y debería estar listo para comenzar.

Si necesita hacer esto completamente sin ningún servidor, entonces esta respuesta a una pregunta relacionada al menos resalta la información que necesitaría enviar (en una demostración de cortar y pegar).