当使用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() {
});