2015-04-22 154 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'));