Подключение SOCKET.IO-клиента (angular) к SOCKET.IO-серверу (node.js) через https net :: ERR_CONNECTION_CLOSED - PullRequest
0 голосов
/ 09 марта 2020

Наш веб-сайт работает на внутренней тестовой машине, к которой могут получить доступ все компьютеры в сети.

Теперь мы хотим развернуть этот веб-сайт на веб-сервере (Apache2), чтобы сделать его доступным для нашего клиентов. Мы хотим использовать https, и именно здесь мы столкнулись с проблемой.

Клиент Socket.io не может подключиться к серверу node.js с момента переключения на https. Мы используем подписанный сертификат от доверенного центра сертификации. Я перепробовал каждое решение, которое смог найти, но ни одно из них не подходит для нашего случая.

Конструктор, используемый с ngx-socket-io в angular:

constructor() {
    super({url: 'https://mywebPage.com:8080',options:{secure: true,  origin: '*', transport:['websocket']}})
}

Наш сертификат действителен, поскольку он работает для нашей страницы angular. Мы также можем отправлять запросы HTTPS GET / POST к нашему API, который находится на том же сервере.

node.js код сервера socket.io:

var options = {
    key: fs.readFileSync('/etc/apache2/folder/certificate.com.key'),
    cert: fs.readFileSync('/etc/apache2/folder/certificate.com.public.crt'),
    ca: fs.readFileSync('/etc/apache2/folder/certificate-intermediate.crt'),
    requestCert: true
};
let server = require('https').createServer(options);  
let io = require('socket.io')(server);

server.listen(8080);
console.log("Server started on Port 8080");

клиент пытается подключиться к сокету-серверу, но не удается и получает net::ERR_CONNECTION_CLOSED, остальная часть веб-страницы загружается нормально и имеет действительный сертификат

Мы также проверили, доступен ли порт на веб-сервере, и он Кажется, что он открыт в netstat и nma.

Если потребуется какая-либо дополнительная информация, я рад предоставить.

РЕДАКТИРОВАТЬ: протестировал установку с rejectUnauthorized:false на стороне клиента, но это не помогло не изменить ошибку. похожие вопросы переполнения стека, которые я рассмотрел при решении этой проблемы:

socket.io net :: ERR_CONNECTION_CLOSED

Настройка связи сервер-сервер SSL с использованием socket.io в node.js

EDIT 2: добавлено requestCert: false, rejectUnauthorized: false в мои node.js опции. Теперь предыдущая ошибка была устранена:

error during WebSocket handshake: Unexpected response code: 400

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