1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cc_1234-Group-Co

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
ws.md 3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:43 b1fd262

Введение

WebSocket, как мы полагаем, всем знаком по использованию. Он широко применяется в таких областях, как обмен мгновенными сообщениями (IM), пересылка сообщений, игры и прямые трансляции. Как же организовать пересылку сообщений между разными пользователями в среде кластера с несколькими серверами WebSocket?

Идея

  1. Сначала мы реализуем API-сервер, который будет поддерживать постоянное соединение с главным сервером WebSocket через пул соединений:

API-сервер <-> Кластер серверов WebSocket

  1. Когда пользователь подключается к кластеру серверов WebSocket, информация о подключении этого пользователя записывается. В неё входит информация о том, какой сервер WebSocket используется, и его fd (файловый дескриптор):

Клиент пользователя <-> Кластер серверов WebSocket

  1. Пересылка сообщений между пользователями:

Сообщение пользователя <-> API-сервер <-> Кластер серверов WebSocket <-> Клиент пользователя

Пользователи могут обмениваться сообщениями через API-сервер и главный сервер WebSocket.

Преимущества

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

Демонстрация реализации

  • Добавьте Group\Async\Pool\WebSocketPoolServiceProvider в onWorkStartServices в файле app.php.
  • Запустите сервер WebSocket: php webscoket.php.
  • Запустите API-сервис: php server.php.
  • Откройте страницу клиента WebSocket: http://localhost:9778/websocket. Не забудьте открыть инструменты разработчика браузера.
  • Реализуйте групповую отправку и пересылку сообщений, вызвав API: http://localhost:9778/sendMsg?msg=hello. Проверьте ответ на странице клиента.

Для более сложных бизнес-логик потребуется изменить взаимодействие кода API и главного сервера WebSocket.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cc_1234-Group-Co.git
git@api.gitlife.ru:oschina-mirror/cc_1234-Group-Co.git
oschina-mirror
cc_1234-Group-Co
cc_1234-Group-Co
master