Mi amigo y yo estamos tratando de conectar nuestra PC usando enchufes. Entonces mi amigo ejecuta un servidor WS simple como este:
const WebSocket = require('ws') function onConnect(wsClient) { wsClient.on('message', (message) => { const buff = Buffer.from(message) console.log('new message', buff.toString()) }) wsClient.on('close', function() { console.log('connection closed'); }) } wsServer.on('connection', onConnect);Su propósito es mostrar un mensaje en la terminal una vez que se recibe uno.
Ejecuto un cliente WS simple como este (uso la IP pública de mi amigo):
const WebSocket = require('ws') wsServer = new WebSocket('ws://${IP}:9000') wsServer.on('open', () => { wsServer.send(JSON.stringify('wsServer')) })Cuando ejecuto tanto un cliente como un servidor en mi máquina local, todo funciona bien. Cuando trato de comunicarme con la PC de mi amigo, aparece un error como este:
Error: conectar ETIMEDOUT ${IP}:9000
Entonces, supongo que el problema es: cuando presiono la IP pública, el enrutador no sabe a dónde reenviar una solicitud (ya que hay docenas de personas que la usan).
Tengo preguntas generales:
¿Por qué no hay tal error cuando uso algún chat en línea? Su servidor también puede ser parte de alguna red local.
¿Hay alguna forma de establecer una conexión P2P segura usando sockets? Si es así, ¿cómo?
¡Gracias!