2015-08-17 15 views
7

Ho creato una websocket PHP utilizzando Ratchet. Questo Websocket è in esecuzione sulla porta 8080 del mio server interno 10.0.4.160.Impossibile connettersi a una presa Web

Sto provando a collegarmi ad esso da un sito Web che ha abilitato SSL "alias protocollo https".

Quando si tenta di connettersi alla websocket da un browser FireFox, ottengo problemi di sicurezza dal browser perché sto mixando tra connessione protetta/non protetta. Questo è l'errore che vedo nella console di javascript.

SecurityError: The operation is insecure.

per risolvere il problema di sicurezza ho creato un proxy stunnel che mi permette di accettare la connessione su 10.0.4.160:58443 e collegarla alla porta 127.0.0.1:8080. Questo tunnel sicuro dovrebbe consentirmi di mantenere la connessione al websocket protetta e bypassare il controllo di sicurezza del browser.

Tuttavia, ogni volta che tentano di connettersi al websocket ottengo un errore

WebSocket connection to 'wss://10.0.4.160:58443/' failed: Error in connection establishment: net::ERR_TIMED_OUT

Questo è lo script jQuery che viene utilizzato per la connessione al websocket

<script> 

    $(function(){ 
     if ("WebSocket" in window) 
     { 
      var conn = new WebSocket('wss://10.0.4.160:58443'); 

      conn.onopen = function(e) { 
       console.log("Connection established!"); 
       showMessage('Connected', 0); 
      }; 

      conn.onmessage = function(e) { 
       console.log(e.data); 
       showMessage(e.data, 1); 
      }; 

      conn.onclose = function(e) { 
       console.log(e.code); 
       console.log(e.reason); 
      };    

      conn.onerror = function(e) { 
       console.log(e); 
      };  

     } else { 
      console.log('Your browser does not support Websocket!'); 
     } 

     function showMessage(msg, append){ 
      if(append){ 
       $('#status').append('<br>' + msg); 
       return; 
      } 

      $('#status').text(msg); 
     } 
    }); 

</script> 

Qui è il mio attuale configurazione stunnel

[websockets] 
client = yes 
accept = 58443 
connect = 8080 
verify = 2 
CAfile = ca-certs.pem 
debug = 7 
OCSPaia = yes 

Come posso collegarmi al websocket dal mio browser? Grazie

+0

Giù votato finché non vediamo il server PHP impostato con cricchetto –

risposta

1

saperne di più su HTML5 WebSocket a http://www.html5rocks.com/en/tutorials/websockets/basics/

Socket.io è un popolare libreria socket web continua a www.socket.io

Non ci sono informazioni sufficienti per identificare il problema. Si prega di fornire un registro del server.

  • Il server riconosce un tentativo di connessione?
  • Il server gestisce l'handshake del server client?

Se il server riconosce un tentativo di connessione, il problema è più che probabile l'handshake. Non c'è un problema con il tuo JavaScript.


EXTRA INFORMAZIONI:

un altro tipo di connessione: (chiameremo questo tipo 1)

|SERVER(PHP)| <--- CONNECTION --> |SERVER(websocket)| 

quello che si sta utilizzando: (chiameremo questo tipo 2)

|BROWSER(client)| <----CONNECTION --> |SERVER(websocket)| 

quando si utilizza tipo 1 Connessioni come di tipo 2 connessioni si rischia di traboccare il server Web principale che causerà gravi problemi di prestazioni. Host Web come: Godaddy, Hostgator .. ect ..interromperà le connessioni che stanno inondando i loro server perché sono visti come attacchi DDOS.

Non so cosa sia il cricchetto, ma per mantenere un server & connessione client aperta PHP dovrà rimanere aperto & questo NON è MAI MAI MAI MAI MAI MAI una buona idea. Cerca in un server creato in linguaggi come C# o C++.

Problemi correlati