tutorial socket nodejs node example con javascript sockets node.js socket.io p2p

javascript - nodejs - ¿Es posible configurar un cliente socket.io en ejecución(lado del servidor) en un servidor node.js?



socket io socket io js (3)

Antes de ir a toda velocidad en socket.io para las comunicaciones de servidor a servidor ..... socket.io está diseñado como un navegador para la infraestructura de comunicación del servidor. Estoy seguro de que no es la mejor solución para el servidor P2P. Además, si lo hace de servidor a servidor, ¿por qué no simplemente Websockets? Hay varios módulos de websocket para el nodo, por ejemplo, https://github.com/einaros/ws

Me gustaría habilitar las comunicaciones p2p basadas en sockets entre dos o más servidores de aplicaciones node.js diferentes. Estoy usando socket.io para manejar toda esa comunicación entre un servidor determinado y la aplicación web a la que sirve, pero lo que estoy buscando es una forma de comunicar servidor a servidor.

Inicialmente había asumido que sería tan fácil como algo como esto:

var io = require("socket.io"); var socket = io.connect("my remote endpoint");

Sin embargo, como resulta que la implementación de socket.io en el servidor no ofrece un método de "conexión", solo un método de escucha.

¿Por qué es esto? ¿Por qué no puedo tratar un servidor de aplicación de nodo como un cliente a un servidor socket.io que se ejecuta en otro lugar? ¿Hay alguna manera de que pueda lograr esta funcionalidad?


Bien, gracias a @pimvdb en los comentarios anteriores, tengo una solución viable.

Básicamente, la biblioteca socket.io que npm instala tiene una dependencia en otro módulo, llamado socket.io-client. En una instalación estándar de socket.io esto se instalará en node_modules / socket.io / node_modules / socket.io-client

Sin embargo, también es posible decir "npm install socket.io-client" e instalarlo como su propia biblioteca de ciudadanos de primera clase.

Entonces tu uso se ve así:

var client = require("socket.io-client"); client.connect("http://myendpoint.com:3000/whatever"); client.emit("test", "foo");

Y todo funciona

Entonces, gracias hombre!


Solo por aclaración, este es un ejemplo con oyentes y posibilidad de emitir eventos (y sin instalar nuevamente un módulo ya instalado)

var io = require(''socket.io/node_modules/socket.io-client''); client = io.connect(''http://''+CONFIG.host+'':''+CONFIG.port); client.on(''connect'',function() { client.emit("test","foo"); });