簡體   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