Как подключиться к веб-расписанию вручную, используя netcat/socat/telnet?
Я пытаюсь подключиться к эталонному эхо-серверу websocket "вручную", чтобы узнать, как работает протокол (для этого я использую для этого socat). Однако сервер неизменно закрывает соединение без предоставления ответа. Любая идея почему?
Вот что я делаю:
socat - TCP:echo.websocket.org:80
Затем вставьте следующий текст в терминал:
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
Я понюхал параметры соединения с инструментами разработчика в firefox на той же машине, где это работает безупречно: поэтому я бы предположил, что они верны. Однако после этого сервер немедленно закрывает соединение, не предоставляя ответа. Зачем? Как я могу реализовать протокол "вручную"?
Я бы хотел, чтобы на моем терминале был введен тест типа, и чтобы сервер ответил на то, что я набрал (он работает в веб-браузере).
Ответы
Ответ 1
Я думаю, вы хотите изменить поток сокета для перевода \n (строки) на CRLF (возврат каретки и фид строки). Выполнение info socat
создает подробную информацию, которая включает этот модификатор:
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.
Итак, я думаю, вы должны это сделать:
socat - TCP:echo.websocket.org:80,crnl