当前位置: 首页 > 面试题库 >

使用node.js中的socket.io设置服务器-服务器SSL通信

微生令
2023-03-14
问题内容

我正在尝试通过SSL连接使用socket.io设置服务器到服务器的链接。这是我的例子:

/**
 * Server
 */


var app = require('express')();
var config = require('./config');
var https = require('https');
var http = require('http');
var fs = require('fs');
var server = https.createServer({key: fs.readFileSync(config.ssl.key), cert: fs.readFileSync(config.ssl.cert), passphrase: config.ssl.passphrase}, app);
//var server = http.createServer(app);
var io = require('socket.io').listen(server);

server.listen(config.port);

app.get('/', function (req, res) {
    res.send('Server');
  //res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});



/**
 * Client
 */


var io = require('socket.io-client');
//var socket = io.connect('http://localhost', {port: 8088});
var socket = io.connect('https://localhost', {secure: true, port: 8088});
  socket.on('connect', function(){
    socket.on('event', function(data){});
    socket.on('disconnect', function(){});
  });

在没有SSL的情况下运行时,代码工作正常。我怀疑这可能是我的自签名证书未被接受,但是我不知道如何使客户接受它。

请告诉我如何:1.接受自签名SSL证书。或2.以其他方式帮助我完成这项工作。

提前致谢。


问题答案:

经过更多搜索后,将其添加到客户端中使其可以工作:

require(’https’)。globalAgent.options.rejectUnauthorized = false;

/**
 * Client
 */


var io = require('socket.io-client');
//var socket = io.connect('http://localhost', {port: 8088});

require('https').globalAgent.options.rejectUnauthorized = false;

var socket = io.connect('https://localhost', {secure: true, port: 8088});
  socket.on('connect', function(){
    socket.on('event', function(data){});
    socket.on('disconnect', function(){});
  });


 类似资料:
  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • 我试图将Node.js Socket.io客户机连接到Python/Flask Socket.io服务器。 在服务器(Raspberry Pi)上运行这个项目:pi-gpio-server。这个项目已经有了一个内置的网站,这是一个socket.io客户机来访问Raspberry PI的引脚。整个项目运作良好。 有什么想法吗,为什么我找不到联系?在Flask服务器中有客户机的限制吗?有什么特别的命令

  • 问题内容: 我想在两个或更多不同的node.js应用程序服务器之间启用基于套接字的p2p通信。我正在使用socket.io处理给定服务器与其服务的Web应用程序之间的所有此类通信- 但我正在寻找的是一种服务器与服务器之间进行通信的方法。 我最初以为它像这样简单: 但是,事实证明,服务器端socket.io实现没有提供“连接”方法,仅提供了侦听方法。 为什么是这样?为什么不能将节点应用程序服务器视为

  • 问题内容: 我无法让我的SSL服务器与Godaddy的证书一起使用 使用Express:3.1.0 在此之下,可以使用本地生成的密钥/ crt /未经go daddy签名的密钥/ crt(浏览器会抱怨,但是如果添加异常,它将起作用。 通过Godaddy,我提供了一个额外的文件gd_bundle.crt,我相信您可以像这样实现,但是我遇到了错误 通过这种配置,我得到:错误107(net :: ERR

  • 问题内容: 我目前有一个用.Net编写的TCP服务器应用程序,用于接收消息并将其提交给客户端。我正在考虑构建Web应用程序,因此需要通信层。 我已经构建了一个Node.JS +Socket.IO应用程序,该应用程序连接到我的TCP服务器,然后将通信推送到Web应用程序,并且一切正常。 我刚刚读过SignalR作为将其保留在.Net堆栈中的替代方法。 但是我也发现我可以编写一个C#Websocket