Программирование HTML Отправка запросов WebSocket Sat, January 17 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Отправка запросов WebSocket Печать
Добавил(а) microsin   

Ниже описано несколько способов отправки WebSocket-запросов с помощью утилит командной строки curlwebsocat [3] и netcat.

[curl]

Для Ubuntu/Debian, установка curl с WebSocket поддержкой (из исходников, гарантированно свежая версия):

1. Удалите старый curl если он был установлен из пакета:

sudo apt remove curl -y

2. Установите зависимости:

sudo apt update
sudo apt install -y build-essential autoconf libtool libssl-dev
sudo apt install -y libpsl-dev libssl-dev zlib1g-dev libbrotli-dev \
     libssh2-1-dev libnghttp2-dev librtmp-dev libldap2-dev \
     libidn2-dev libgsasl7-dev libkrb5-dev

3. Скачайте исходники:

git clone https://github.com/curl/curl.git

4. Компиляция:

cd curl
./buildconf
./configure --with-openssl --enable-websockets
make -j$(nproc)
sudo make install

5. Обновите пути библиотек:

sudo ldconfig

Пример отправки запросов:

# Если ESP32 работает на порту 80
curl -v \
     --no-buffer \
     -H "Connection: Upgrade" \
     -H "Upgrade: websocket" \
     -H "Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==" \
     -H "Sec-WebSocket-Version: 13" \
     http://192.168.1.100/ws

# Если ESP32 работает на порту 81
curl -v \
     --no-buffer \
     -H "Connection: Upgrade" \
     -H "Upgrade: websocket" \
     -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
     -H "Sec-WebSocket-Version: 13" \
     http://192.168.1.100:81/ws

[websocat]

В Ubuntu есть несколько надёжных способов установки websocat. Лучший для вас зависит от того, хотите ли вы получить готовый файл или собрать программу из исходного кода.

Для быстрого ознакомления основные методы представлены в таблице ниже:

Метод Лучший для... Особенности
Скачивание готового файла ... быстрой и простой установки. Скачивается готовый бинарник, помещается в /usr/local/bin, и даются права на выполнение.
Установка через Cargo [2] ... пользователей Rust или если нужна сборка из исходников. Требует предварительной установки компилятора Rust (cargo).
Использование Docker-образа ... тестирования в изолированной среде. Запускает websocat внутри контейнера, не требуя установки в систему.

Способ 1: Установка с помощью готового файла

Это самый быстрый (и рекомендованный) способ, если у вас обычный компьютер (x86_64/amd64).

1. Скачайте последнюю версию websocat напрямую с GitHub и поместите её в системную директорию:

sudo wget -qO /usr/local/bin/websocat \
 https://github.com/vi/websocat/releases/latest/download/websocat.x86_64-unknown-linux-musl

2. Дайте файлу права на выполнение:

sudo chmod a+x /usr/local/bin/websocat

3. Проверьте установку:

websocat --version

Если команда не найдена, проверьте, что директория /usr/local/bin есть в вашей переменной окружения PATH (командой echo $PATH).

Способ 2: Установка через Cargo (сборка из исходного кода)

Этот метод универсален и работает на разных архитектурах, но требует больше шагов и устанавливает компилятор Rust.

1. Установите Rust и Cargo, если они еще не установлены, выполнив в терминале:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

После установки перезапустите терминал или выполните source $HOME/.cargo/env, чтобы добавить Cargo в PATH.

2. Установите websocat с поддержкой SSL:

cargo install --features=ssl websocat

3. После завершения сборки программа будет доступна по команде websocat из вашей домашней директории (~/.cargo/bin/) .

Возможные проблемы при сборке: если сборка завершилась ошибкой из-за отсутствия линкера cc, то установите пакет build-essential:

sudo apt install build-essential

Для работы с SSL также может потребоваться пакет libssl-dev.

Способ 3: Запуск через Docker

Если вам нужно просто протестировать websocat, не устанавливая его в систему, используйте готовый образ Docker.

docker run --rm -it ghcr.io/vi/websocat:nightly --version

Или сразу запустите клиент для тестового сервера:

docker run --rm -it ghcr.io/vi/websocat:nightly wss://echo.websocket.events

Простой тест работы. После установки проверьте, что всё работает, подключившись к публичному эхо-серверу:

websocat wss://echo.websocket.events

Введите текст и нажмите Enter — вы должны увидеть ответ-эхо. Для выхода нажмите Ctrl+C.

Если вы планируете часто работать с WebSocket через командную строку и хотите, чтобы программа была доступна всем пользователям системы, подойдёт первый способ. Если же вы используете другие инструменты на Rust или нужна конкретная версия — выберите второй способ.

Пример отправки запроса WebSocket на сервер ESP32-S3 на порт 80 по умолчанию (здесь имя esp-home.local разрешается в IP-адрес с помощью протокола MDNS [1]):

websocat ws://esp-home.local/ws \
  -H="Host: esp-home.local" \
  -H="Origin: http://esp-home.local"

[netcat]

Команда netcat, аналогичная показанному выше примеру для websocat:

printf "GET /ws HTTP/1.1\r\nHost: esp-home.local\r\nUpgrade: websocket\r\nConnection: \
 Upgrade\r\nSec-WebSocket-Key: $(openssl rand -base64 16)\r\nSec-WebSocket-Version: \
 13\r\nOrigin: http://esp-home.local\r\n\r\n" | nc esp-home.local 80

[Ссылки]

1. ESP-IDF mDNS.
2Rust: дополнительная информация про Cargo и Crates.io.
3websocat.

 

Добавить комментарий


Защитный код
Обновить

Top of Page