Đây là vấn đề của tôi:Làm cách nào để kết nối hai máy chủ node.js với ổ cắm web?
Tôi có máy chủ A, đang chạy node.js và sử dụng socket.io để liên lạc với khách hàng (trình duyệt web). Tất cả điều này đang chạy tốt và dandy.
Tuy nhiên, bây giờ tôi có máy chủ B, cũng cần kết nối với máy chủ A thông qua ổ cắm web, tôi đã nhấn vào tường. Không ai trong số các khách hàng WebSocket Node.js tôi đã tìm thấy sẽ không làm việc với các socket.io trên máy chủ A.
Vì vậy, đây là trường hợp tôi đang phấn đấu để:
.--------. .----------. .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------' '----------' '----------'
Khách hàng -server Một kết nối được thực hiện thông qua socket.io
Bây giờ, Máy chủ B (chạy node.js) phải kết nối với máy chủ A qua websocket (để đi qua cổng 80). Nhưng ...
Ngay cả những mã ví dụ trong mô-đun socket.io-client không hoạt động ...:/
// 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.');
});
Mã này chỉ cần vượt qua mà không cần bất kỳ sai sót và thực hiện kết thúc sau vài giây.
Cập nhật: Mã mẫu
Server (mà chỉ hoạt động tốt) trông như thế này:
// 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.');
});
});
Khách hàng trông như thế này
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 và 3 in ra tốt , không có lỗi và vài giây sau quy trình này chỉ thoát ra
Ngoài ra, máy chủ A không xuất bất cứ thứ gì vào nhật ký, mặc dù tôi đã ghi nhật ký socket.io trên "mọi thứ".
Bạn có chắc chắn là một khách hàng sử dụng ổ cắm web hoặc bạn có thể sử dụng ổ cắm cũ đơn giản không? – maerics
'khách hàng websocket node.js tôi đã tìm thấy' cái nào? – Kato
Tôi cần ít nhất mô phỏng các ổ cắm web vì tôi cần kết nối với cùng một máy chủ. – crappish