2014-10-22 9 views
16

Próbuję połączyć się z reference websocket echo server "ręcznie", aby dowiedzieć się, jak działa protokół (używam tego do tego). Jednak serwer niezmiennie zamyka połączenie bez udzielania odpowiedzi. Każdy pomysł, dlaczego?Jak ręcznie połączyć się z websocket za pomocą netcat/socat/telnet?

Oto co robię:

socat - TCP:echo.websocket.org:80 

Potem wklej następujący tekst w terminalu:

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 

I powąchał parametry połączenia z narzędzi programistycznych, w firefox, na tej samej maszynie, gdzie działa to bezbłędnie: dlatego zakładam, że są poprawne. Jednak potem serwer natychmiastowo zamyka połączenie, bez udzielania odpowiedzi. Czemu? Jak mogę wdrożyć protokół "ręcznie"?

Chciałbym napisać test w moim terminalu i poprosić serwer o odpowiedź na to, co wpisałem (działa w przeglądarce internetowej).

Odpowiedz

26

myślę chcesz zmodyfikować strumień gniazdo do przetłumaczenia \ n (line feed) do CRLF (powrót karetki & nowego wiersza). Robi info socat produkuje szczegółowe informacje, które zawiera ten modyfikator:

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. 

więc myślę, że powinieneś być w stanie to zrobić:

socat - TCP:echo.websocket.org:80,crnl 
Powiązane problemy