Как соединить два сервера node.js с помощью websockets?

Вот моя проблема:

У меня есть сервер A, работающий на node.js и использующий socket.io для связи с клиентами (веб-браузерами). Все это работает хорошо и отлично.

Однако теперь, когда у меня есть сервер B, который также должен подключаться к серверу A через вебсокеты, я столкнулся со стеной. Ни один из найденных мной клиентов node.js websocket не работает с socket.io на сервере A.

Итак, вот к чему я стремлюсь:

.--------.      .----------.      .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------'      '----------'      '----------'

Соединение клиент-сервер A осуществляется через socket.io

Теперь сервер B (работающий под управлением node.js) должен подключиться к серверу A через websocket (чтобы пройти через порт 80). Но...

Даже пример кода в модуле socket.io-client не работает... :/

// 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.');
});

Код просто проходит без ошибок и выполнение заканчивается через несколько секунд.

Обновление: примеры кода

Сервер (который работает просто отлично) выглядит так:

// 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.');
    });
});

Клиент выглядит так:

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 и 3 печатаются просто отлично, без ошибок, и через несколько секунд процесс просто завершается

Также, сервер A не выводит ничего в журнал, хотя у меня socket.io logging установлен на "everything".

57
задан crappish 12 January 2012 в 15:57
поделиться