Oto mój problem:Jak połączyć dwa serwery node.js z gniazdami internetowymi?
Mam serwer A, działający plik node.js i używanie socket.io do komunikacji z klientami (przeglądarkami internetowymi). To wszystko działa dobrze i dandy.
Jednak teraz, gdy mam serwer B, który również musi łączyć się z serwerem A za pośrednictwem gniazd internetowych, uderzyłem o ścianę. Żaden z node.js klientów websocket Znalazłem nie będzie współpracować z socket.io na serwerze A.
Tak, to jest w przypadku jestem dążenie do:
.--------. .----------. .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------' '----------' '----------'
Klienta -server Połączenie odbywa się poprzez socket.io
Teraz serwer B (działający node.js) powinien połączyć się z serwerem A poprzez websocket (w celu przejścia przez port 80). Ale ...
Nawet przykładowy kod w module socket.io-klient nie działa ...:/
// 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.');
});
Kod właśnie przechodzi bez żadnych błędów i wykonanie kończy się po kilku sekundach.
Aktualizacja: Próbki kodu
Server (który działa dobrze) wygląda następująco:
// 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.');
});
});
Client wygląda następująco
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 i 3 drukuje się dobrze , brak błędów, a kilka sekund później proces kończy się po prostu
Również serwer A nie wyprowadza cokolwiek do dziennika, mimo że mam logowanie socket.io ustawione na "wszystko".
Z pewnością jesteś klientem websocket lub możesz po prostu użyć zwykłych starych gniazdek? – maerics
'klientów websocket node.js znalazłem' które? – Kato
Muszę przynajmniej emulować websockets, ponieważ muszę połączyć się z tym samym serwerem. – crappish