Чуть больше года занимаюсь изучением веб программирования, а если конкретно - разработкой браузерной игры. До текущего момента вёл разработку с таким стеком технологий:
- 1) Фронтенд: jquery
- 2) Бэкенд: yii2, redis, nodejs, websockets, pjax
Если конкретно, то с фронтендом я вообще особо не заморачивался, скорее вникал в особенности разработки различных анимаций, оптимизации нагруженной вёрстки и пр., в общем стал гуру по css, html, svg, canvas, но не углублялся в мир современных технологий javascript и использовал банальный jquery. Пока дело не доходило до работы с сервером меня всё устраивало.
С бэкендом всё чуточку сложнее. Все страницы в основном генерировал непосредственно в yii2 и отдавал пользователю. Далее пользователь подключался с помощью вебсокетов к nodejs серверу и подписывался на определённый ветки событий. Все запросы каких-то действий как правило посылались через ajax в yii2. То есть если происходило какое-то событие (yii2 принял чей-то запрос, скажем сообщение в чате) и было необходимо обновить информацию у некоторых пользователей, то yii2 отправлял информацию об этом событии в redis, а nodejs подхватывал оттуда это событие и рассылал всем подписанным на него пользователям.
Переход между страницами осуществлялся с помощью pjax.
В общем, сейчас начал осознавать, что это уж крайне сомнительная схема работы для динамической браузерной игры. Скорость переключения страниц и подгрузки контента вызывает большие сомнения.
В плане фронтенда сейчас рассматриваю react.js, так как хотелось бы возложить работу по генерации вьюшек полностью на пользователей и максимально разгрузить сервер, а заодно это поможет унифицировать рендер нового и обновлённого контента, так как сейчас приходится переписывать по 2 раза одно и то же для того контента который был до захода в приложение (генерируется на yii2) и обновлённого (генерируется jquery по событию вебсокетов).
А вот в плане бэкенда я пока что очень слабо себе представляю в каком направление мне двигаться. Хочу полностью перенести все взаимодействия с сервером на вебсокеты и наверно nodejs. Но в таком случае абсолютно не понимаю как мне отправлять начальный html "набор" из ссылок на css и js файлы и скелета сайта. Не понимаю как стоит организовать авторизацию пользователей и взаимодействие с базой данных. Не будет ли проблем с ассинхронностью nodejs? Какие могут быть подводные камни? Как структурировать код nodejs сервера? Есть ли какие-то фреймворки для таких задач?
Может быть есть какие-то другие стеки технологий для таких задач?