HTTPS를 통해 클라이언트를 실행할 때 socket.io는 HTTPS를 통해 서버에 연결하려고 시도하고 있습니다. 현재 서버는 HTTP 연결 만 수락하고, listen(port)
함수는 HTTPS를 지원하지 않습니다.
HTTPS 서버를 만든 다음 socket.io를 이와 같이 연결해야합니다.
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) {
});
그리고 HTTP와 HTTPS가 모두 필요한 경우 두 대의 서버를 시작하고 둘 모두에 socket.io를 연결할 수 있습니다.
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) {
});
그런 다음 클라이언트 측에서 HTTP 또는 HTTPS를 통해 페이지에 액세스했는지 여부에 따라 연결할 포트를 결정할 수 있습니다.
var port = location.protocol === 'https:' ? 8151 : 8150;
var socketIO = io('*.*.*.*:' + port);
socketIO.once('connect', function() {
});
HTML 페이지를 https로 변경할 때 위 코드를 변경 했습니까? – Loren
아니요 코드를 변경하지 마십시오. http의 원본 코드 작업이며 https에서 작동하지 않습니다. – PainMustDie