2014-10-22 7 views
16

Sto provando a connettermi allo reference websocket echo server "manualmente", per imparare come funziona il protocollo (sto usando socat per questo). Tuttavia, il server chiude invariabilmente la connessione senza fornire una risposta. Qualche idea del perché?Come posso connettermi a un web socket manualmente, con netcat/socat/telnet?

Ecco quello che faccio:

socat - TCP:echo.websocket.org:80 

Poi, ho incollare il seguente testo nel terminale:

GET /?encoding=text HTTP/1.1 
Origin: http://www.websocket.org 
Connection: Upgrade 
Host: echo.websocket.org 
Sec-WebSocket-Key: P7Kp2hTLNRPFMGLxPV47eQ== 
Upgrade: websocket 
Sec-WebSocket-Version: 13 

ho annusato i parametri della connessione con gli strumenti di sviluppo, in Firefox, sulla stessa macchina, dove funziona perfettamente: quindi, presumo che siano corretti. Tuttavia, dopo questo, il server chiude immediatamente la connessione, senza fornire una risposta. Perché? Come posso implementare il protocollo "manualmente"?

Vorrei testare il tipo sul mio terminale e chiedere al server di rispondere con quello che ho digitato (Funziona in un browser web).

risposta

26

Penso che si desidera modificare il flusso di presa di tradurre \ n (avanzamento riga) per CRLF (Ritorno a capo & avanzamento riga). Facendo info socat produce informazioni dettagliate che comprende questo modificatore:

crnl Converts the default line termination character NL ('\n', 0x0a) 
     to/from CRNL ("\r\n", 0x0d0a) when writing/reading on this chan- 
     nel (example). Note: socat simply strips all CR characters. 

Quindi penso che si dovrebbe essere in grado di fare questo:

socat - TCP:echo.websocket.org:80,crnl 
Problemi correlati