我的问题是:

我有一个服务器,正在运行 node .js和使用套接字.用于与客户端(web浏览器)通信的io.一切都很顺利.

然而,现在我有了服务器B,它也需要通过WebSocket连接到服务器A,我遇到了麻烦.没有 node .我发现的js websocket客户端无法使用该套接字.服务器A上的io.

所以,这就是我努力争取的情况:

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

客户端-服务器通过套接字进行连接.木卫一

现在,服务器B(运行node.js)应该通过websocket连接到服务器A(以便通过端口80).但是

甚至是socket中的示例代码.io客户端模块不工作…:/

// 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不向日志(log)输出任何内容,即使我有套接字.io日志(log)设置为"一切".

推荐答案

事实证明,出于某种原因,我使用了旧的示例,尽管我对它们进行了三次判断.嗯,是的.

而且,结果是插座坏了.io客户端在最新 node (6.x.x)上已损坏.设法从github找到了它的更新,替换了文件,耶,一切都正常!

Edit:不幸的是,我没有保存任何指向工作示例的链接,但在快速浏览代码之后,似乎唯一的更改是对客户端代码的更改,现在看起来是这样的:

console.log('1');

// Connect to server
var io = require('socket.io-client')
var socket = io.connect('localhost:8080', {reconnect: true});

console.log('2');

// Add a connect listener
socket.on('connect', function(socket) { 
    console.log('Connected!');
});

console.log('3');

Node.js相关问答推荐

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

AWS-ROUTE 53指向S3存储桶,错误是别名目标名称不在目标区域内

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

如何修复node.js中的错误代码无法加载资源:服务器响应状态为403(禁止)

mongoose findOneAndUpdate 不更新数据库

如何使用对象中的常量值验证字符串字段?

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

使用react 组件加载特定 DIV 而无需重新加载整个页面

在 Atlas 触发器(Node JS)中正确初始化 Firebase 管理 SDK

使用 Forms API 进行批量更新时生成 itemId

在 node:readline 中按 CTRL+D 时会发出什么信号?

在数组的另一个对象中获取数组的mongoose 对象

Mongoose,如何一次更新多个?

如何从 github 编译第三方扩展?

无服务器无法获取所有记录事件对象验证失败?

node_modules 中 .bin 文件夹的用途是什么?

我可以有条件地将 where() 子句添加到我的 knex 查询吗?

在单独的模块中定义 Mongoose 模型

从 JavaScript 文件或 REPL 中 require()'ing CoffeeScript 文件

mongoose 填充与对象嵌套