@mrdragon9000

Как реализовать backend realtime-игры с «ведущим» игру процессом?

Нужно сделать realtime-приложение по типу покера. Есть список комнат, какой-то пул комнат сервер держит постоянно созданными, какие-то комнаты пользователи создают сами(с паролем и индивид настройками).
Когда в комнату заходят достаточное кол-во игроков, начинается игра. Ведущий сначала раздает всем игрокам карты, после чего ждет или того что все игроки сделают ставки, или что истечет время данного этапа и перейдет к след.шагу (ложит часть карт на стол и снова ждем ставки, а в конце начисляет выигрывшему фишки на баланс, и переводит игру к 1 шагу, тоесть новой раздаче).
Как это реализовать серверно?
Бекенд привык писать на laravel, nodejs обычно только для дополнительных сервисов.
Вижу два варианта:
1) Сделать единый процесс на nodejs и в качестве бекенда, и в качестве ведущего комнат(+1 процесс в кач. socket-сервера), а комнаты хранить в его оперативе. Тоесть этот процесс слушает 80 порт на http resp api запросы и отвечает на них, а также содержит переменную Rooms, в которой и будут все комнаты. Он будет пинговать комнаты на необходимость перехода к след.этапу и делать сопутствующие этому действия.
Нравится: очень легко управлять комнатами. При запросе инфы о них - просто берем из переменной. Легко хранить сами ставки и участников комнаты, просто в качестве свойств комнаты.
Что не нравится: нельзя расширить. Тоесть я не могу поставить на другой сервер еще один процесс обработчик комнат, да и вообще не знаю насколько это хорошо и обрабатывать api и бесконечно слушать комнаты.
2) Сделать laravel resp api + процесс (в виде php artisan-команды) который будет обрабатывать комнаты, а сами комнаты хранить в каким-то образом в redis-e (+ socket сервер). Что не нравится - более запутанная реализация, не уверен в виде какого типа данных хранить комнаты в редисе, как хранить ставки.
Но зато не сложно расширить.
Подскажите как это лучше реализовать
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект