2017-07-15 107 views
0

所以我切換到HTTPS,一切都很好地運行插座。切換到HTTPS後無法連接到服務器

如果我嘗試訪問的網站與HTTP,套接字連接,但如果我嘗試使用HTTPS連接,我得到:

在控制檯的錯誤:

Failed to load resource: net::ERR_CONNECTION_CLOSED 
Failed to load resource: net::ERR_CONNECTION_CLOSED 
Failed to load resource: net::ERR_CONNECTION_CLOSED 
Failed to load resource: net::ERR_CONNECTION_CLOSED 

前端:

function connect() 
{ 
    if (!SOCKET) 
    { 
     var hash = getCookie('hash'); 
     if (hash == "") { 
      //$.notify('You must login!', 'success'); 
     } 
     if (hash != "") { 
      $.notify('Connecting...', 'success'); 
     } 
     SOCKET = io(':3001'); 
     SOCKET.on('connect', function(msg) { 
      if (hash != "") { 
       //$.notify('Connected!', 'success'); 
      } 
      SOCKET.emit('hash', { 
       hash: hash 
      }); 
      $('#games tr').remove(); 
     }); 
     SOCKET.on('connect_error', function(msg) { 
      $.notify('Connection lost!', 'success'); 
     }); 
     SOCKET.on('message', function(msg) { 
      onMessage(msg); 
     }); 

     SOCKET.on('disconnect', function(m) { 
      SOCKET.emit('disconnect', { 
       uhash: hash 
      }); 
     }); 
    } 
    else 
    { 
     console.log("Error: connection already exists."); 
    } 
} 

的Node.js /後端

var httpsOptions = { 
    cert: fs.readFileSync("/path/to/cert/cert.pem"), 
    ca: fs.readFileSync("/path/to/cert/chain.pem"), 
    key: fs.readFileSync("/path/to/cert/privkey.pem"), 
} 

var server = require('https').createServer(httpsOptions); 
var io = require('socket.io').listen(server); 
server.listen(3001); 
+0

什麼是實際錯誤? –

+0

套接字沒有連接.. –

+0

也是我連接丟失! –

回答

0

您的節點應用程序應該只接受HTTP連接。您的Apache服務器應該負責HTTPS。這簡化了您的應用程序,並允許Apache爲您負載平衡,如果您決定這樣做的話。

因此,您的應用和Apache之間應該是HTTP,然後是Apache和客戶端之間的HTTPS。有關於如何做到這一點許多導遊,我建議您閱讀official documentation

如果你決定違背這一點,並在Web應用程序級別(不推薦),那麼我們就需要更多的信息,實現SSL。

+0

因此node.js服務器可以使用http.createserver保持HTTP狀態? –

+0

是的,您應該將節點服務器綁定到127.0.0.1,以便它只能在內部訪問,然後讓Apache通過代理連接到它。所以Apache將接收HTTPS連接,然後通過HTTP將數據傳遞給Node。這在安全性方面很好,因爲它是內部通信。 – rubenwardy

+0

順便說一句,HTTPS已經正常工作,免除了Socket.IO連接。 –