gpt4 book ai didi

node.js - 如何使用 websockets 连接两个 node.js 服务器?

转载 作者:IT老高 更新时间:2023-10-28 21:51:39 26 4
gpt4 key购买 nike

这是我的问题:

我有服务器 A,运行 node.js 并使用 socket.io 与客户端(网络浏览器)通信。这一切都运行良好,花花公子。

但是,现在我有服务器 B,它也需要通过 websockets 连接到服务器 A,所以我碰壁了。我发现的所有 node.js websocket 客户端都不能与服务器 A 上的 socket.io 一起使用。

所以,这就是我努力的目标:

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

Client-server 通过socket.io完成连接

现在,服务器 B(运行 node.js)应该通过 websocket 连接到服务器 A(为了通过端口 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 日志记录设置为“一切”。

最佳答案

对于 future 的人:
这是 2 个非常简单的 Node.js 应用程序,它们使用 socket.io相互连接、发送和接收消息。

需要的包是:

npm install socket.io

Node-App-1 server.js:

var io = require('socket.io').listen(3000);
io.on('connection', function (socket) {
console.log('connected:', socket.client.id);
socket.on('serverEvent', function (data) {
console.log('new message from client:', data);
});
setInterval(function () {
socket.emit('clientEvent', Math.random());
console.log('message sent to the clients');
}, 3000);
});

Node-App-2 client.js:

var io = require('socket.io-client');
var socket = io.connect("http://localhost:3000/", {
reconnection: true
});

socket.on('connect', function () {
console.log('connected to localhost:3000');
socket.on('clientEvent', function (data) {
console.log('message from the server:', data);
socket.emit('serverEvent', "thanks server! for sending '" + data + "'");
});
});

关于node.js - 如何使用 websockets 连接两个 node.js 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8837236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com