@reislor97

Как правильно организовать архитектуру многопользовательской браузерной игры?

Добрый день, переношу настольную игру в веб. Вся серверная логика уже написана, взаимодействие между игроками тоже, но не уверен, что реализовал это взаимодействие правильно.
Исходные данные:
Клиенты(6 Игроков), Сервер 1 шт,Сокет сервер 1 шт
Как происходит взаимодействие между игроками сейчас:
Игрок 1 кликает на кнопку. По нажатии на неё отправляется запрос в контроллер на сервер. В контроллере выполняется какая-то логика и происходит взаимодейтсвие с базой данных, возвращается результат с данными обратно Игроку 1(Эти данные нам нужно передать всем игрокам)Далее этот же Игрок 1 отправляет эти данные сокет серверу, тот перенапрявляет эти данные на все подключенные соединения(Игроки 1-6).
Вот это именно мне здесь и не нравится, что Игрок1 отвечат за передачу данных остальным Игрокам.
Кажется более логичным, чтобы данные передавал не Игрок 1 на вебсокет сервер, а непременно сам сервер.
Но совсем непонятно как организовать взаимодействие обычного и сокет серверов.
Вообще возможно ли cделать http запрос к socket серверу со стороны другого сервера и если можно, то как?
P.S. Сервер(php) и сокет сервер(php, могу на node.js переделать)
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Karpion
Игрок1 не сможет оповестить остальных Игроков, сели они спрятаны за NAT.
Ответ написан
Wendor
@Wendor
nodejs developer / *nix admin
Самый безболезненный для вас - сделать на сервере демона, который после старта боя/игры будет вести ход игры. В вашем случае, вас может выручить ваш сокет сервер.. раз уж все на php контроллерах сделано, то сделайте взаимодействие лишь черезинего, а он в свою очередь пусть дергает нужные php контроллеры.
Но это слегка костыль.. лучше было бы написать полноценного демона.. на php кстати тоже вполне себе не плохо пишутся демоны и вебсокет серверы.
Но лично я бы для всех этих целий воспользовался nodejs.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы