WebSocket Chat

Этот простой интерфейс позволяет вам ввести сообщение и отправить его на сервер WebSocket. Все подключенные клиенты получат сообщение и отобразят его.

Шаг 5. Проверьте соединение через WebSocket

  1. Запустите сервер WebSocket, запустив php start_server.php.
  2. Откройте index.html в браузере.
  3. Откройте ту же страницу в другом браузере или вкладке, чтобы имитировать несколько клиентов.

Когда вы отправляете сообщение от одного клиента, оно появится в браузерах всех подключенных клиентов.


Преимущества использования WebSockets в PHP


Случаи использования веб-сокетов в PHP


Заключение

WebSockets предоставляет мощное решение для полнодуплексной связи в реальном времени между клиентом и сервером, идеально подходящее для систем чата, живых уведомлений и других приложений реального времени. Используя PHP с такими библиотеками, как Ratchet, вы можете легко настроить сервер WebSocket и интегрировать его в свои приложения для лучшего взаимодействия с пользователем и повышения скорости реагирования.

","image":"http://www.luping.net/uploads/20240930/172769436566fa861d5b103.jpg","datePublished":"2024-11-06T15:21:16+08:00","dateModified":"2024-11-06T15:21:16+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Понимание веб-сокетов в PHP

Понимание веб-сокетов в PHP

Опубликовано 6 ноября 2024 г.
Просматривать:838

Understanding WebSockets in PHP

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

В этом руководстве мы рассмотрим WebSockets, как они работают и как их реализовать на PHP.


Что такое веб-сокеты?

WebSockets обеспечивают интерактивную связь между веб-браузером (или любым другим клиентом) и сервером. Вот ключевые аспекты WebSockets:

  1. Полнодуплексная связь: и клиент, и сервер могут отправлять сообщения друг другу в любое время, что делает соединение более эффективным, чем традиционный опрос HTTP.
  2. Постоянное соединение: после установки соединение WebSocket остается открытым до тех пор, пока оно не будет явно закрыто клиентом или сервером.
  3. Низкая задержка: поскольку WebSockets устраняют необходимость открывать новые соединения для каждого запроса, они уменьшают задержку, что делает их идеальными для общения в реальном времени.

Как работают веб-сокеты

  1. Рукопожатие: общение начинается с HTTP-запроса. Клиент отправляет HTTP-запрос с заголовком Upgrade, чтобы переключить соединение с HTTP на WebSockets.
  2. Соединение установлено: как только сервер подтверждает рукопожатие, соединение устанавливается, и клиент и сервер могут начать отправлять и получать сообщения.
  3. Обмен сообщениями: данные передаются через легкие кадры, которые можно отправлять туда и обратно без накладных расходов HTTP-заголовков.
  4. Завершение соединения: клиент или сервер могут разорвать соединение.

Когда использовать веб-сокеты

  • Приложения реального времени: например, приложения чата, живые уведомления и совместное редактирование.
  • Игры: для многопользовательских онлайн-игр, требующих частых обновлений.
  • Прямые каналы: потоковая передача цен на акции, спортивных результатов или данных в реальном времени с устройств Интернета вещей.
  • Инструменты для совместной работы: для таких приложений, как Google Docs, где нескольким пользователям необходимо видеть обновления в режиме реального времени.

Реализация WebSockets в PHP

Чтобы реализовать WebSockets в PHP, вы можете использовать такую ​​библиотеку, как Ratchet, библиотеку PHP, специально разработанную для двунаправленной связи в реальном времени с использованием WebSockets.


Пошаговая реализация WebSocket с использованием Ratchet

Шаг 1. Установите Ratchet через Composer

Во-первых, вам необходимо установить библиотеку Ratchet. Предполагая, что у вас установлен Composer, вы можете запустить следующую команду:

composer require cboden/ratchet

Шаг 2. Создайте сервер WebSocket на PHP

Давайте создадим простой сервер WebSocket, который будет обрабатывать соединения и сообщения.

  1. Создайте класс сервера WebSocket в WebSocketServer.php:
clients = new \SplObjectStorage;
    }

    // Called when a new client connects
    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New connection: ({$conn->resourceId})\n";
    }

    // Called when a client sends a message
    public function onMessage(ConnectionInterface $from, $msg) {
        echo "New message: $msg\n";

        foreach ($this->clients as $client) {
            if ($from !== $client) {
                // Send the message to everyone except the sender
                $client->send($msg);
            }
        }
    }

    // Called when a connection is closed
    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Connection closed: ({$conn->resourceId})\n";
    }

    // Called if an error occurs
    public function onError(ConnectionInterface $conn, \Exception $e) {
        echo "Error: {$e->getMessage()}\n";
        $conn->close();
    }
}

Этот класс реализует MessageComponentInterface Ratchet, который определяет методы для обработки новых соединений, входящих сообщений, закрытых соединений и ошибок.

Шаг 3. Запуск сервера WebSocket

Создайте новый PHP-скрипт для запуска сервера WebSocket, например, start_server.php.

run();

Вы можете запустить сервер, запустив этот скрипт:

php start_server.php

Теперь сервер будет работать на ws://localhost:8080.

Шаг 4. Создайте интерфейс для подключения к серверу WebSocket

Теперь давайте создадим HTML-файл с помощью jQuery и JavaScript для подключения к серверу WebSocket.

  1. Создайте HTML-файл index.html:


    WebSocket Chat

WebSocket Chat

Этот простой интерфейс позволяет вам ввести сообщение и отправить его на сервер WebSocket. Все подключенные клиенты получат сообщение и отобразят его.

Шаг 5. Проверьте соединение через WebSocket

  1. Запустите сервер WebSocket, запустив php start_server.php.
  2. Откройте index.html в браузере.
  3. Откройте ту же страницу в другом браузере или вкладке, чтобы имитировать несколько клиентов.

Когда вы отправляете сообщение от одного клиента, оно появится в браузерах всех подключенных клиентов.


Преимущества использования WebSockets в PHP

  • Обновления в реальном времени: WebSockets предоставляют обновления в реальном времени без затрат на HTTP-опрос.
  • Меньшая задержка: поскольку соединение остается открытым, сообщения можно отправлять немедленно, что снижает задержку.
  • Двунаправленная связь: и сервер, и клиент могут отправлять сообщения друг другу одновременно, в отличие от традиционного HTTP, где связь инициируется клиентом.

Случаи использования веб-сокетов в PHP

  • Приложения чата: WebSockets идеально подходят для приложений чата в реальном времени, где сообщения необходимо мгновенно отправлять всем пользователям.
  • Живые уведомления: для приложений, которым необходимо отправлять живые уведомления (например, социальные сети, цены на акции).
  • Инструменты для совместной работы в реальном времени: WebSockets обеспечивают совместную работу в режиме реального времени, например редактирование документов в реальном времени.
  • Онлайн-игры: многопользовательские онлайн-игры выигрывают от связи WebSockets с малой задержкой.

Заключение

WebSockets предоставляет мощное решение для полнодуплексной связи в реальном времени между клиентом и сервером, идеально подходящее для систем чата, живых уведомлений и других приложений реального времени. Используя PHP с такими библиотеками, как Ratchet, вы можете легко настроить сервер WebSocket и интегрировать его в свои приложения для лучшего взаимодействия с пользователем и повышения скорости реагирования.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/mdarifulhaque/understanding-websockets-in-php-2cli?1. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3