Сервер Web Socket — это простая программа, которая может обрабатывать события и действия Web Socket. Обычно он предоставляет методы, аналогичные API-интерфейсу клиента Web Socket, и большинство языков программирования предоставляют реализацию. Следующая диаграмма иллюстрирует процесс связи между сервером Web Socket и клиентом Web Socket, подчеркивая инициированные события и действия.
На следующем рисунке показан запуск событий сервера и клиента Web Socket —
Подключение к веб-серверу
Сервер Web Socket работает аналогично клиентам Web Socket. Он реагирует на события и выполняет действия при необходимости. Независимо от используемого языка программирования каждый сервер Web Socket выполняет определенные действия.
Он инициализируется по адресу веб-сокета. Он обрабатывает события OnOpen, OnClose и OnMessage , а также отправляет сообщения клиентам.
Создание экземпляра сервера веб-сокетов
Каждому серверу Web Socket требуется действительный хост и порт. Пример создания экземпляра Web Socket на сервере:
var server = new WebSocketServer("ws://localhost:8181");
Любой действительный URL-адрес может использоваться со спецификацией порта, который ранее не использовался. Очень полезно вести учет подключенных клиентов, так как он предоставляет подробности с различными данными или отправляет разные сообщения каждому из них.
Fleck представляет входящие соединения (клиенты) с интерфейсом IwebSocketConnection . Всякий раз, когда кто-то подключается или отключается от нашего сервиса, пустой список может быть создан или обновлен.
var clients = new List<IWebSocketConnection>();
После этого мы можем вызвать метод Start и дождаться подключения клиентов. После запуска сервер может принимать входящие соединения. В Fleck методу Start нужен параметр, который указывает сокет, вызвавший события —
server.Start(socket) => { });
OnOpen Event
Событие OnOpen определяет, что новый клиент запросил доступ и выполняет первоначальное рукопожатие. Клиент должен быть добавлен в список и, вероятно, должна храниться информация, относящаяся к нему, например, IP-адрес. Fleck предоставляет нам такую информацию, а также уникальный идентификатор для соединения.
server.Start(socket) ⇒ { socket.OnOpen = () ⇒ { // Add the incoming connection to our list. clients.Add(socket); } // Handle the other events here... });
Событие OnClose
Событие OnClose возникает всякий раз, когда клиент отключен. Клиент удаляется из списка и информирует остальных клиентов об отключении.
socket.OnClose = () ⇒ { // Remove the disconnected client from the list. clients.Remove(socket); };
Событие OnMessage
Событие OnMessage возникает, когда клиент отправляет данные на сервер. Внутри этого обработчика событий входящее сообщение может быть передано клиентам или, возможно, выбрать только некоторые из них.
Процесс прост. Обратите внимание, что этот обработчик принимает строку с именем message в качестве параметра —
socket.OnMessage = () ⇒ { // Display the message on the console. Console.WriteLine(message); };
Метод Send ()
Метод Send () просто передает желаемое сообщение указанному клиенту. Используя Send (), текстовые или двоичные данные могут храниться на клиентах.
Работа события OnMessage выглядит следующим образом: