сервер сокета io не отвечает

Иногда запрос на https:/domain:8050'/socket.io/socket.io.js возвращает статус "(сбой)" на вкладке сети инструментов разработчика Chrome.

В Firefox выдается ошибка «Ошибка безопасного подключения» и статус «Прервано».

Версия ввода-вывода сокета "1.3.5". Версия Node.js — «v0.10.25».

сервер.js

var fs = require('fs'),
    express = require('express'),
    options = {
        secureProtocol: 'SSLv23_method',
        secureOptions: require('constants').SSL_OP_NO_SSLv3,
        ca: fs.readFileSync('/etc/apache2/ssl/CA_Bundle.crt'),
        key: fs.readFileSync('/etc/apache2/ssl/private.key'),
        cert: fs.readFileSync('/etc/apache2/ssl/public.crt'),
        passphrase: 'pssword'
    },
    app = express();
    server = require('https').Server(options, app);
    io = require('socket.io').listen(server);

    server.listen(8050);

    app.get('/', function (req, res) {
        res.send("server..");
    });
    io.set('transports', ['websocket', 
      'flashsocket', 
      'htmlfile', 
      'xhr-polling', 
      'jsonp-polling', 
      'polling']);

    io.use(function(socket, next)  {
        var handshakeData = socket.request,
            cookie =parseCookies(handshakeData);
        if(!socket.handshake.query || !handshakeData.headers || !handshakeData.headers.cookie)  {
            next(new Error('-Error code:1')); //cookie transmitted
            console.log('cookie transmitted');
            return false;
        }
        else  next();
    });
    io.sockets.on('connection', function (socket) {
        console.log("\ncalled connection 8050.");
    });

index.html

<script type="text/javascript" src="https://domain:8050/socket.io/socket.io.js"></script>

<script type="text/javascript">
var socket = io.connect('https://domain:8050',{                 
                    'sync disconnect on unload' : false,
                    'connect timeout': 10000,
                    'reconnect': false,
                });
</script>

person Otgonbaatar Ganbat    schedule 22.04.2015    source источник


Ответы (1)


Вы должны сказать, что папка socket.io — это папка со статическим содержимым. Если у вас есть файлы socket.io в папке node_modules, вы можете использовать app.use(express.static('node_modules'));.

person trevligheten    schedule 22.04.2015