Aquí está mi problema:¿Cómo conectar dos servidores node.js con websockets?
Tengo el servidor A, ejecutando node.js y usando socket.io para comunicarme con clientes (navegadores web). Todo esto funciona bien y elegante.
Sin embargo, ahora que tengo el servidor B, que también necesita conectarse al servidor A a través de websockets, he chocado contra una pared. Ninguno de los clientes WebSocket Node.js que he encontrado no funcionará con el socket.io en el servidor A.
Por lo tanto, este es el caso que estoy luchando por:
.--------. .----------. .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------' '----------' '----------'
Cliente -server Una conexión se realiza a través de socket.io
Ahora, el servidor B (que se ejecuta node.js) debe conectarse al servidor A a través de websocket (para pasar por el puerto 80). Pero ...
Incluso el código de ejemplo en el módulo socket.io-cliente no funciona ...:/
// Connect to server
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
// Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected.');
});
El código sólo pasa sin ningún error y la ejecución termina después de unos segundos.
Actualización: Ejemplos de código
servidor (que funciona muy bien) es el siguiente:
// Load requirements
var http = require('http'),
io = require('socket.io');
// Create server & socket
var server = http.createServer(function(req, res){
// Send HTML headers and message
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('<h1>Aw, snap! 404</h1>');
});
server.listen(8080);
io = io.listen(server);
// Add a connect listener
io.sockets.on('connection', function(socket) {
console.log('Client connected.');
// Disconnect listener
socket.on('disconnect', function() {
console.log('Client disconnected.');
});
});
cliente se parece a esta
console.log('1');
// Connect to server
var io = require('socket.io-client')
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
console.log('2');
// Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected!');
});
console.log('3');
1, 2 y 3 imprime bien , sin errores, y unos segundos más tarde el proceso simplemente sale de
Además, el servidor A no produce cualquier cosa en el registro, a pesar de que tengo el registro socket.io establecido en "todo".
¿Definitivamente usted es un cliente de websockets o puede simplemente usar enchufes simples? – maerics
'los clientes de websocket node.js que he encontrado' ¿cuáles? – Kato
Necesito al menos emular websockets ya que necesito conectarme al mismo servidor. – crappish