Ich versuche, eine Server-zu-Server-Verbindung mit socket.io über SSL-Verbindung einzurichten. Das ist mein exmaple:Setup Server-Server SSL-Kommunikation mit socket.io in node.js
/**
* 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(){});
});
Der Code funktioniert gut, wenn ohne SSL lief. Ich vermute, es könnte sein, dass mein selbstsigniertes Zertifikat nicht akzeptiert wird, aber ich weiß nicht, wie ich den Client dazu bringen kann, es zu akzeptieren.
Bitte zeigen Sie mir wie: 1. Akzeptieren Sie selbstsignierte SSL-Zertifikat. oder 2. Helfen Sie mir, diese Arbeit anders zu machen.
Vielen Dank im Voraus.
Nach etwas mehr Graben, fand ich, dass hinzufügen: require ('https'). GlobalAgent.options.rejectUnauthorized = false; vor "var socket" im Client behebt das Problem –