Я пытаюсь создать веб-сайт для имитации процедур захода на посадку по приборам на самолете в Laravel. Визуальная сторона создается с помощью javascript на стороне клиента. Однако сервер PHP будет обрабатывать бэкэнд игры, такой как обнаружение местности, навигационные средства, математика широты и долготы и т. Д. c. Из-за отсутствия у меня навыков с PHP и Laravel мои идеи о том, как сделать эту работу звучит грубо и, возможно, глупо sh, и я хотел бы получить представление о том, как выполнить такой план.
При загрузке симулятора большое количество параметров передается в виде запроса POST.
Идея 1:
- Запуск потока в фоновом режиме перебирая все активные игровые экземпляры (я не уверен, как запустить поток после запуска Laravel веб-сервера.)
- Когда данные необходимо отправить клиенту, используйте WebSockets и pusher и каналы для отправки информации. (Это настройка с помощью Laraval-Echo)
- Чтобы отправить данные на сервер, используйте AJAX POST-запросы через JavaScript.
- Чтобы загрузить игру, когда загружается страница приложения в Laravel сохраните все настройки в таблицу SQL, из которой можно получить нить игры. (Есть ли способ сделать это более эффективно?)
Идея 2:
- Аналогично # 1, но вместо этого есть один глобальный поток который начинается, когда первый человек загружает игру. Данные для игры передаются непосредственно в указанный поток. ЕСЛИ делает это, как создать поток или переменную, к которой может обращаться любой сеанс?
Идея 3:
- Создайте сервер в Java, который будет обрабатывать игру и подключаться к каждому пользователю через сокеты. (Это кажется наиболее эффективным методом, но для его работы потребуется НАМНОГО больше работы. Конечно, это можно сделать и на других языках.)
В конце мне потребуется только поддержка 100-500 одновременных симуляций, и игровая сторона не слишком сложна для математики.
Кроме того, насколько я понимаю, использование глобальных переменных работает только для подключенного пользователя, а не для всех, поэтому я не мог не используйте это для темы.