DEV Community

Cover image for Socket.io или игра в дурака
Stanislav Karol
Stanislav Karol

Posted on • Updated on

 

Socket.io или игра в дурака

Всякий раз, когда я что-то новое узнаю, мне хочется для закрепления материала написать какой-нибудь более или менее полезный проект. Вот где-то год назад я узнал как сделать сокет на веб-сервере, сделанном на nestjs. Как видно из заголовка, я для реализации своих планов и хотелок сделал игру в дурака, а точнее- в подкидного дурака. Просто потому что обычный чат все делают, это не интересно и пусть уж лучше будет лежать не особо активная игра, чем не особо активный чат.
Поскольку серверная часть игры держится на NodeJS, то есть риск при большом количестве игроков и одновременных игр повесить сервер и тeм самым растерять этих самых игроков (ха-ха, большое количество игроков на проекте с одним человеком, который следит за моими проектами). Поэтому основная часть сделана на PostgreSQL, а бэкенд просто делает авторизацию, организовывает игровой чат и вызывает функции базы данных.
К клиентской части у меня было меньше энтузиазма, чем к серверной, может поэтому игра выглядит так, как будто пришла прямиком из ... сказал бы из 90х, но в 90х не было реакта и игры были сделаны на коленках и паскале.
В этой игре игрок играет не с ботом, а с каким-то другим человеком и с этим партнёром по игре можно даже общаться в чате.
Сейчас для регистрации можно использовать какие-нибудь несуществующие адреса, например test@test.com, но кто знает, может в будущем будет приходить оповещение по почте или напоминание о пароле. Так что какую почту использовать- решать Вам.
Причём из-за того, что я не стал вкладываться в поддержку этого всего у меня серверная часть развёрнута на Heroku, а клиентская на vercel. Вот, кстати, адрес этой самой игры: https://card-game-fool.vercel.app/

Исходники клиента и сервера можно взять у меня на гитхабе.

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.