Доброго дня
Установил NodeJS v4.2.1 на Debian Jessie, подключил фреймворк Socket.IO v1.3.7 для доставки данных по веб-сокету в браузер и столкнулся со следующей проблемой.
У меня есть ь сайт
valyuta.com/uploads/wss.html который подключается к NodeJS который установлен на новом сервере wss://q.investaz.net:4000
При подключении я получаю ошибку:
socket.io-1.3.7.js:3 WebSocket connection to 'wss://q.investaz.net:4000/socket.io/?EIO=3&transport=websocket' failed: WebSocket opening handshake was canceled
и получаю ответ от сервера "(Opcode -1)"
Конфигурация сервере следующая:
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('/home/quotes/ssl/q.investaz.net.key'),
cert: fs.readFileSync('/home/quotes/ssl/q.investaz.net.chained.crt'),
ca: fs.readFileSync('/home/quotes/ssl/gd_bundle-g2-g1.crt'),
requestCert: true,
rejectUnauthorized: false
}
var app = require('https').createServer(httpsOptions, handler);
io = require('socket.io').listen(app);
app.listen(4000);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.on('connection', function (socket) {
console.log('Server Listening: ' + 4000);
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
Данная проблема решается следующим способом, нужно обратится к
https://q.investaz.net:4000/ после этого уже wss://q.investaz.net:4000 начинает нормально работать.
Так что хочу отметить что данная проблема существует только в Google Chrome.
Чтобы в этом убедится, достаточно зайти на этот сайт
https://www.websocket.org/echo.html с разных браузеров и ввести следующий URL:
wss://q.investaz.net:4000/socket.io/?EIO=3&transport=websocket
В Firefox все работает, в Google Chrome нет.
Буду очень признателен, если подскажите мне как решить эту проблему.