Замена веб-сокета на pcnt_signal / posix_kill? - PullRequest
0 голосов
/ 09 июля 2019

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

В качестве замены я думаю о сигнальном «событии» механизма:

  • Всякий раз, когда регистрируется новый игрок, его информация, включая pid скрипта «register.php», сохраняется в базе данных (которая мне все равно нужна).
  • register.php затем отправляет posix_kill(pid,SIGUSR1) «сообщений» всем другим процессам, в настоящее время находящимся в базе данных.
  • Регистрация выполняется с помощью ajax-вызова с тайм-аутом около 30 секунд (я думаю, это называется длинным опросом?)
  • register.php выполняет sleep(30) после вызова pcntl_signal(SIGUSR1,handler), где handler создаст ответ, содержащий текущих членов команды; ответ «без изменений», если сигнал не получен через 30 секунд

  • После тайм-аута на стороне клиента отправляется новый вызов ajax (только без регистрации и posix_kill вызов), чтобы снова ждать обновлений ...

Прежде чем тратить свое время на излишне сложный код или заново изобретать какой-то стандартный код:

  • Как вы думаете, это будет работать? Будет ли это достаточно эффективно для 100-1000 пользователей одновременно?
  • Может быть, это даже стандартный способ, и есть пример кода?
  • Есть ли более простые способы реализовать это (используя php на сервере)?
  • Должен ли я вообще использовать websockets / SSE, если мне все равно нужна замена в случае пользователей IE или Edge?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...