Как локальное устройство Ubuntu может прослушивать события приложения Laravel, развернутого на удаленном сервере - PullRequest
0 голосов
/ 15 мая 2019

Удаленное приложение (приложение) хранится на удаленном веб-сервере со статическим IP-адресом и доступно по протоколу http / https. Приложение использует Laravel Framework.

Клиенты хранятся на разных локальных устройствах Ubuntu (RaspberryPi), имеют доступ в интернет с динамическим ip. Эти клиенты отвечают за управление оборудованием. В настоящее время эти клиенты используют чистый php и некоторые скрипты bash.

Клиенты взаимодействуют с приложением следующими способами:

  1. запрашивает задачи из приложения
  2. отправляет данные в приложение (результаты управления оборудованием)

Обе 1-я и 2-я задачи могут быть решены с помощью http-запроса.

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

Для веб-приложений мы можем использовать веб-сокет. Но наши устройства не имеют графического интерфейса, только сервер Ubuntu с интерфейсом командной строки.

Существуют ли какие-либо события, подобные веб-сокетам решения или идеи, как эти клиенты могут взаимодействовать с приложением?

1 Ответ

0 голосов
/ 17 мая 2019

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

Но локальные устройства не имеют прямого публичного входа.

Эту проблему можно решить с помощью туннеля ssh между локальными клиентами и некоторым удаленным сервером с открытым доступом. Чтобы установить этот туннель, вы должны выполнить следующую команду на локальном клиенте:

ssh -R 8010:localhost:8020 -nvNT remoteusername@remotehost

8020 - порт локального клиента для приема веб-хуков, 8010 - порт удаленного сервера, -nvNT - набор параметров для получения журнала в реальном времени.

Во время работы этого туннеля все запросы к удаленному хосту: 8010 будет обрабатываться локальным клиентом на его порту localhost: 8020.

Итак, приложение может протолкнуть веб-хуки через туннель к клиенту.

Ниже приведены несколько полезных ссылок:

https://hackernotes.io/simple-recipe-forwarding-webhooks-local-development-environment/

https://www.davidokwii.com/how-to-ssh-into-server-that-has-no-public-ip-from-anywhere/

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04

...