Как разрешить кросс-доменные соединение с сервером Node.js и Socket.io?

Доброго дня

Установил 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)"

f54fca21e73643f9b252a83002ec57e5.JPGdd4eb272665d4ed0a8b65f2a1a6329c3.JPG

Конфигурация сервере следующая:
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 нет.

Буду очень признателен, если подскажите мне как решить эту проблему.
  • Вопрос задан
  • 1305 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Сейчас нигде ничего не работает.

Судя по всему сервер отключен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы