Как понимаю для установки соединения по WebRTC сначала пирам надо обменяться данными, как именно они будут устанавливать соединение, там есть варианты особенно когда у них серые адреса (находятся за NAT). Для этого нужен сигнальный сервер - машина доступная по публичному IP, которая будет знать про "комнаты" и какие пиры в них находятся, удобно делать такое на WebSockets чтоб иметь возможность быстро оповещать всех пиров в комнате о подключении нового пира.
Сам по себе WebRTC не имеет своего встроенного сигнального сервера, по сути в спецификации написано как хотите так и обменивайтесь данными, главное потом сообщите о чем договорились.
Так вот Socket.io это не альтернатива WebRTC это кака раз сигнальный сервер который нужен для установления связи между пирами, после чего в дело вступает WebRTC для обмена медиа контентом
Кроме сигнального сервера могут понадобится еще STUN и TURN сервера как раз для обхода проблем связанные с NAT одна два пира не имеют публичного адреса
тут можно почитать
https://voxlink.ru/kb/asterisk-configuration/obzor...