У меня проблема с клиент-серверной стороной Socket.io, у меня есть VPS, и я недавно использовал Certbot для автоматического включения HTTPS в моем домене.Что ж, я использую apache в Debian Jessie и использую URL-адрес, например, «api.domaine.com» с https, включенным из Certbot, я использую Node.js на этом сервере с Express и Socket.io на стороне сервера.
В настоящее время я делаю расширение Chrome с socket.io, который находится на стороне клиента.
Вот моя конфигурация ввода-вывода с сервера:
let PORT = process.env.PORT || 1337;
let server = app.listen(PORT);
let io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
socket.on('joinRoom', function(room) {
socket.join(room);
console.log(io.sockets.adapter.rooms);
socket.emit('joined', room);
});
});
И моя линия подключения от клиента вbackground.js:
let socket = io.connect('https://api.domain.com/');
Моя проблема в том, что консоль браузера (Chrome Dev Tool) возвращает это:
WebSocket connection to 'wss://api.domain.com/socket.io/?EIO=3&transport=websocket&sid=T4dxwvDQUX8PvS86AAAF' failed: Error during WebSocket handshake: Unexpected response code: 400
РЕДАКТИРОВАТЬ: Моя конфигурация Virtualhost для SSL:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName api.domain.com
ProxyPass / http://0.0.0.0:1337/
ProxyPassReverse / http://0.0.0.0:1337/
ProxyPreserveHost On
SSLCertificateFile /etc/letsencrypt/live/api.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/api.domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>