2015-04-22 222 views
0

在chrome开发人员工具的网络选项卡中,有时候对https:/ domain:8050'/ socket.io/socket.io.js的请求返回状态“(失败)”。socket io服务器没有响应

在Firefox中出现“安全连接失败”错误和中止状态。

套接字IO版本是“1.3.5”。 Node.js版本是“v0.10.25”。

server.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> 

回答

0

你必须告诉表达了socket.io文件夹的静态内容的文件夹。如果你有你的socket.io东西在node_modules文件夹中,你可以使用app.use(express.static('node_modules'));