繁体   English   中英

Socket.io和Express ERR_SSL_VERSION_OR_CIPHER_MISMATCH

[英]Socket.io and Express ERR_SSL_VERSION_OR_CIPHER_MISMATCH

我的代码托管在GitHub Pages上。 我正在尝试通过IP将客户端连接到计算机的Node.JS服务器,但连接显示错误ERR_SSL_VERSION_OR_CIPHER_MISMATCH

那是我的服务器代码:

var app = require('express')();
var server = require('https').createServer(app);
var io = require('socket.io')(server);

app.set('port', process.env.PORT || 8080);
app.set('host', process.env.HOST || '0.0.0.0');

server.listen(app.get('port'), app.get('host'), () => {
  console.log("Express server listening IP: " + app.get('host'));
});

io.on('connection', socket => {
    socket.on('sayHi', data => {
        console.log(data.message);
    });
});

这是客户端:

const socket = io.connect('https://myPublicIP:8080');
socket.emit('sayHi', { message: 'Hello world' });

发生该错误是因为您使用HTTPS运行SocketIO服务器。

因此,我们有两种方法可以解决此问题:

  1. require('https')更改为require('http')
  2. 按照以下示例源代码在createServer时导入您的证书SSL文件

     const privateKey = fs.readFileSync(process.env.PRIVATE_KEY, 'utf8') const certificate = fs.readFileSync(process.env.CERTIFICATE, 'utf8') const credentials = { key: privateKey, cert: certificate, passphrase: process.env.PASSPHRASE } var server = require('https').createServer(credentials, app); 

希望这可以帮到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM