Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

WebSockets с ICS в Delphi: простое демо сервера с поддержкой SSL/TLS и без

Delphi , Интернет и Сети , Протоколы

WebSockets в Delphi с использованием Internet Component Suite (ICS) - это мощный инструмент для создания реального времени веб-приложений. В этой статье мы рассмотрим, как создать простое демо-приложение сервера WebSocket с поддержкой SSL/TLS и без, используя ICS в Delphi.

Что такое WebSockets?

WebSockets - это протокол связи, который позволяет двустороннюю связь между клиентом и сервером через один открытый канал. Это позволяет передавать данные в режиме реального времени без необходимости постоянных запросов с клиента.

Почему ICS?

ICS - это набор компонентов для Delphi, который упрощает работу с веб-технологиями, включая WebSockets. ICS включает в себя широкий спектр компонентов, таких как TIdHTTP, TIdHTTPClient, TIdHTTPServer и TIdWebSocketServer, которые облегчают работу с HTTP и WebSockets.

Создание простого демо-сервера WebSocket с ICS

Для создания простого демо-сервера WebSocket с ICS мы будем использовать новый образец, предоставленный Overbyte - OverbyteIcsBasicWebServer.dpr. Этот образец упрощает создание сервера, удаляя большинство функций, которые могут запутать новичков.

  1. Установка ICS

Прежде всего, убедитесь, что у вас установлена последняя версия ICS. Вы можете скачать его с официального сайта Overbyte (https://www.overbyte.be/products/ics.html).

  1. Получение образца

Как упоминалось ранее, образец OverbyteIcsBasicWebServer.dpr находится в репозитории ICS V9 по адресу https://svn.overbyte.be/svn/icsv9/. Скопируйте этот файл в свою рабочую директорию.

  1. Создание проекта

Откройте Delphi и создайте новый проект, выбрав File > New > VCL Forms Application. В качестве основной формы выберите TForm1.

  1. Добавление компонентов ICS

Перейдите на форму и щелкните правой кнопкой мыши на панели компонентов, чтобы открыть меню Component > Import Component. Найдите и импортируйте TIdHTTPServer и TIdWebSocketServer из раздела ICS.

  1. Настройка сервера

Перетащите TIdHTTPServer и TIdWebSocketServer на форму. Установите свойства серверов следующим образом:

  • IdHTTPServer: Name = 'IdHTTPServer1', Port = 8080 (или любой другой доступный порт).
  • IdWebSocketServer: Name = 'IdWebSocketServer1', IdHTTPServer = 'IdHTTPServer1'.

  • Обработка событий WebSocket

Двойным щелчком на 'IdWebSocketServer1' откройте обработчик события OnConnect. Добавьте следующий код для отправки приветственного сообщения новому клиенту:

pascal procedure TForm1.IdWebSocketServer1Connect(AContext: TIdContext); begin IdWebSocketServer1.Contexts[AContext].Write('Hello from server!'); end;

Также добавьте обработчик события OnMessage для получения сообщений от клиента:

pascal procedure TForm1.IdWebSocketServer1Message(AContext: TIdContext; AMessage: TIdMessage); begin ShowMessage('Received: ' + AMessage.ContentAsString); end;

  1. Запуск сервера

Добавьте кнопку на форму и свяжите с ней обработчик события OnClick. В обработчике запустите сервер:

pascal procedure TForm1.Button1Click(Sender: TObject); begin IdHTTPServer1.Active := True; IdWebSocketServer1.Active := True; end;

  1. Тестирование сервера

Для тестирования сервера вы можете использовать любой веб-клиент, поддерживающий WebSockets, например, браузер с расширением WebSocket Tester (https://addons.mozilla.org/en-US/firefox/addon/websocket-tester/). Подключитесь к серверу по адресу http://localhost:8080 и отправьте сообщение. Вы должны увидеть приветственное сообщение от сервера и сообщение, полученное сервером, в окне вывода.

Поддержка SSL/TLS

Для поддержки SSL/TLS нам нужно добавить сертификат в наше приложение и указать его в свойствах сервера. Сделайте следующее:

  1. Получение сертификата

Вам нужен сертификат для вашего домена. Если у вас нет сертификата, вы можете создать самоподписанный сертификат для локального тестирования. Для этого воспользуйтесь утилитой makecert из пакета Microsoft Windows SDK.

  1. Добавление сертификата в проект

Скопируйте полученный сертификат в директорию проекта. В нашем примере мы будем использовать сертификат 'myserver.crt'.

  1. Настройка сервера для SSL/TLS

Установите свойство 'IdHTTPServer1' Secure Sockets Layer = True и CertFile = 'myserver.crt'. Также установите Port = 443 для использования стандартного порта SSL/TLS.

  1. Запуск сервера с SSL/TLS

Обновите обработчик события Button1Click, чтобы запустить сервер с SSL/TLS:

pascal procedure TForm1.Button1Click(Sender: TObject); begin IdHTTPServer1.Active := True; IdWebSocketServer1.Active := True; IdWebSocketServer1.KeepAlive := True; end;

Теперь ваш сервер WebSocket поддерживает tanto SSL/TLS, как и небезопасные подключения.

Альтернативное решение

Если вы хотите альтернативное решение, не использующее ICS, вы можете попробовать использование встроенных в Delphi компонентов для работы с HTTP и WebSockets. Однако, это потребует больше кода и настройки, чем использование ICS.

Например, для создания простого сервера WebSocket без ICS, вы можете использовать TIdHTTPServer и TIdWebSocketServer из пакета Indy, который входит в состав Delphi. Однако, настройка и использование Indy требуют более глубокого понимания протоколов и компонентов.

Заключение

В этой статье мы рассмотрели, как создать простое демо-приложение сервера WebSocket с поддержкой SSL/TLS и без, используя ICS в Delphi. Мы использовали новый образец OverbyteIcsBasicWebServer.dpr и добавили обработчики событий для получения и отправки сообщений. Мы также рассмотрели альтернативное решение без использования ICS. Используя эти примеры, вы можете создавать более сложные серверы WebSocket для своих проектов.

Создано по материалам из источника по ссылке.

Описание создания простого демонстрационного сервера WebSocket с использованием Internet Component Suite (ICS) в среде разработки Delphi, включая поддержку SSL/TLS.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Протоколы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:19:46/0.0053980350494385/1