Socket.io и Express ERR_SSL_VERSION_OR_CIPHER_MISMATCH - PullRequest
0 голосов
/ 27 апреля 2018

Мой код размещен на страницах GitHub. Я пытаюсь подключить клиента к серверу Node.JS моего компьютера по IP-адресу, но при подключении появляется ошибка 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' });

1 Ответ

0 голосов
/ 27 апреля 2018

Эта ошибка возникает из-за того, что вы используете HTTPS для запуска сервера SocketIO.

Итак, у нас есть два способа решения этой проблемы:

  1. Изменить require('https') на require('http')
  2. Импортируйте файлы SSL-сертификатов, когда createServer следует исходному коду этого примера

    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);
    

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...