Estoy creando una aplicación de chat de red local en JavaScript, y puedo conectarme entre dos pestañas en una sola computadora, pero cuando intento conectar dos computadoras (en la misma red wifi) falla.
Qué funciona : dos pestañas en la misma computadora (incluso si es un navegador diferente, por ejemplo, pestaña de Chrome <-> pestaña de Firefox).
Lo que no funciona : dos computadoras diferentes (por ejemplo, computadora portátil <-> computadora de escritorio), incluso en la misma red (si uno de los dispositivos es el host de la página).
He intentado obtener información de chrome://webrtc-internals/ , y esta parece ser la única diferencia importante (cuando funciona, los números separados por barras coinciden). ( esta es la cuadrícula de candidatos de hielo para el caso fallido vv)
Aquí hay registros que contienen información intercambiada entre clientes durante una falla:
Aquí están los servidores STUN/TURN que estoy usando (en caso de que ese sea el problema):
const RTC_CONFIG:RTCConfiguration = { iceServers:[ { urls: ["turn:turn.anyfirewall.com:443?transport=tcp"], credential: "webrtc", username: "webrtc" }, { urls: ["turn:192.158.29.39:3478?transport=tcp"], credential: "JZEOEt2V3Qb0y27GRntt2u2PAYA=", username: "28224511:1379330808" }, { urls: [ "stun:stun.l.google.com:19302", "stun:stun1.l.google.com:19302", "stun:stun2.l.google.com:19302", "stun:stun3.l.google.com:19302", "stun:stun4.l.google.com:19302", ] }, ] };EDITAR (más información):
El código continúa fallando de la misma manera si se eliminan los servidores TURN, los servidores STUN o ambos.
Esto es lo que parece cuando conecto dos pestañas: 
Así es como se ve cuando conecto dos computadoras en la misma red WiFi (falla): 
EDIT 2 (prueba de progreso):
Después de configurar un servidor de prueba con https (y wss para la señalización), las conexiones LAN siguen sin funcionar, mientras que las conexiones de red diferentes funcionan (p. ej., escritorio<->portátil en la misma habitación no funciona, portátil<->teléfono en la red celular funciona.)
El problema parece ser quién se conecta con quién y se puede resolver haciendo que el servidor de host de la página sea un dispositivo diferente a cualquiera de los dispositivos de conexión.
A WebRTC no parece gustarle si el host de la página es el mismo dispositivo que uno de los pares de conexión.
Para mayor claridad, esto es lo que sucede cuando se conectan dispositivos en diferentes contextos:
Network 1 devices: host (webpage host) localA localB Network 2 devices: remoteA remoteB Connections: host <> localA [fails] localA <> localB [succeeds] remoteA <> remoteB [succeeds]Debido a que el cliente y el servidor no están en la misma máquina, cuando accede a los medios desde un navegador, por razones de seguridad debe instalar un certificado SSL en su servidor.