PHP-скрипт, работающий как Socket Server и Client одновременно

Для нового проекта мне нужно реализовать протоколы удаленного рабочего стола. Адреса удаленного устройства должны быть защищены и могут никогда не быть отправлены клиенту. После многих исследований и тестов я нашел гуакамоле, который также имеет клиент Java. Хотя проект спроектирован как API, поэтому я начал переносить некоторые фрагменты примера Java-клиента на PHP.

Вариант использования будет следующим:

  • Пользователь заходит в мой сервис (приложение Laravel)
  • Соединение WebSocket устанавливает постоянно работающий скрипт PHP (используя Хоа \ WebSocket)
  • После авторизации необходимо установить TCP-сокет для демона Guacamole
  • Команды, поступающие через WebSocket, должны быть направлены демону Guacamole и наоборот

Это усложняет тот факт, что приложение должно одновременно обслуживать несколько клиентов. Необходимо установить несколько сокетов TCP и одновременно управлять несколькими соединениями WebSocket.

Для моего простого теста я открыл сокет через fsockopen и затем зациклился на ожидании данных. При этом я, очевидно, не могу слушать несколько сокетов одновременно (по крайней мере, реалистично), но я наткнулся на React Socket Client библиотека:

Думайте об этой библиотеке как об асинхронной версии fsockopen() или же stream_socket_client(),

Похоже, это то, что мне нужно, но опять же, я использую HOA и его сервер WeSocket, который, очевидно, также работает в цикле (при вызове WebsocketConnectionHandler->run()).

Должен ли я даже использовать Recket’s Socket Client или вместо этого попробовать использовать библиотеку HOA Socket (видимо, из-за этого я уже использую WebSocket)? Являются ли React и HOA даже совместимыми в их цикле событий, поэтому я могу одновременно прослушивать клиентов WebSocket и TCP-соединение?

Если да, может ли кто-нибудь дать мне несколько советов или примеров, как начать объединять эти два? Спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]