Wenn Sie den Client über HTTPS ausführen, versucht socket.io, eine Verbindung mit Ihrem Server über HTTPS herzustellen. Momentan akzeptiert Ihr Server nur HTTP-Verbindungen, die Funktion listen(port)
unterstützt kein HTTPS.
Sie müssen einen HTTPS-Server erstellen und dann socket.io anhängen, so etwas.
var fs = require('fs');
var options = {
key: fs.readFileSync('certs/privkey.pem'),
cert: fs.readFileSync('certs/fullchain.pem')
};
var app = require('https').createServer(options);
var io = require('socket.io').listen(app);
app.listen(8150);
io.sockets.on('connection', function (socket) {
});
Und wenn Sie sowohl HTTP und HTTPS, dann können Sie zwei Server starten und socket.io sowohl befestigen.
var fs = require('fs');
var options = {
key: fs.readFileSync('certs/privkey.pem'),
cert: fs.readFileSync('certs/fullchain.pem')
};
var httpServer = require('http').createServer();
var httpsServer = require('https').createServer(options);
var ioServer = require('socket.io');
var io = new ioServer();
io.attach(httpServer);
io.attach(httpsServer);
httpServer.listen(8150);
httpsServer.listen(8151);
io.sockets.on('connection', function (socket) {
});
Dann auf der Client-Seite können Sie bestimmen, welcher Port für die Verbindung basierend auf, ob die Seite über HTTP oder HTTPS zugegriffen wurde.
var port = location.protocol === 'https:' ? 8151 : 8150;
var socketIO = io('*.*.*.*:' + port);
socketIO.once('connect', function() {
});
Haben Sie den obigen Code geändert, wenn Sie die HTML-Seite in https geändert haben? – Loren
Nein, ich ändere keinen Code. Es ist der ursprüngliche Code funktioniert auf http und funktioniert nicht auf https. – PainMustDie