Архитектура на уеб игра и кой е ползвал websockets?

ReminD

Well-Known Member
Някой ползвал ли е web sockets?

Имаме домейн, api.site. bg - > към него е добавен websockets , който слухти на 6001 с reverse proxy на апачи. Отделно играе ролята на бек енд сървър, който подава json на site. bg , с VueJS - PWA архитектура.


Правилно ли разсъждавам, че ми трябват няколко отделни broadcast channels - идеята е след натискане на бутон Онлайн Игра -> да започва да сърчва за хора, които също търсят - > тук е единия channel , и когато meet-не requirements по mmr > да ги мачне заедно, и да стартира нов PrivateChannel, с 4 души например- > тоест нов web socket , който слухти LobbyID и playersID / статс в реално време?

тоест 2 уебсокет канала - единият за налични играчи онлайн, които сърчват, и следващият вече за лобито, когато са в 'игра' заедно?


Досега не съм работил с уеб сокети, другата алтернатива, доколко е такава - VueJS постоянно да пингва сървъра с http - req/res - и да следи дали е онлайн и там да се подават статистиките по време на играта? - Доколко е алтернатива това, въпреки че май е таралеж с в гащите, дали си заслужава да обърна внимание на уеб сокетите и да се позабавя, или не е проблем по този начин с постоянно пингване на klient/server с req/res ?
 
Последно редактирано:

Примери - първите с уебсокети, вторите по стария начин - с req/res на интервал.
 
Последно редактирано:
Да сокетите всичко се решава на база канали. След като се отвори частния канал и се намачнат играчите е лесна работа всички получават нотификации и ФЕ филтрира какво да покаже и на кой. Една забележка, хедър за аутх в сокетите няма (както си свикнал в АПИ). Тук аутх се решава на база тикет система пазиш в БД или некъф редис ти ще прецениш.Друг съвет. Гледай бекенд хендлъра да е лек (php нот гуд).
Иначе постоянния пинг е здрав шит не го прави (трафик, лаг... ще омажеш пъстроцветната дъга с лайна).
 
Да сокетите всичко се решава на база канали. След като се отвори частния канал и се намачнат играчите е лесна работа всички получават нотификации и ФЕ филтрира какво да покаже и на кой. Една забележка, хедър за аутх в сокетите няма (както си свикнал в АПИ). Тук аутх се решава на база тикет система пазиш в БД или некъф редис ти ще прецениш.Друг съвет. Гледай бекенд хендлъра да е лек (php нот гуд).
Иначе постоянния пинг е здрав шит не го прави (трафик, лаг... ще омажеш пъстроцветната дъга с лайна).

ПХП ще е, има и вариант за ExpressJS/Node, ама така трябва да има и MongoDB за NOSQL, пък не ми се ще... Драйвера май не беше много окей за mysql на експреса, пък съм работил с Mongoose.

Как и да е, мерси - ще драсна след няколко дни като има някакъв напредък.
 
Най-лесно и бързо с Firebase.

Иначе FeathersJS е за тая работа.
Има малко learning curve заради async-await и т.н.
 
Най-лесно и бързо с Firebase.

Иначе FeathersJS е за тая работа.
Има малко learning curve заради async-await и т.н.

Това featherJS изглежда интересно, ама реално не е бек енд , нито фронт енд, а стои между тях така ли? И се мъчи да ти направи лесен CRUD между DB и фронта? Или не съм разбрал?



"Най-лесно и бързо с Firebase." - то лесно ако бек енда не можеш да си направиш, при мен е обратното, вюто ще е проблемно докато го изхакаря с тея вебсокети.
 
"Най-лесно и бързо с Firebase." - то лесно ако бек енда не можеш да си направиш, при мен е обратното, вюто ще е проблемно докато го изхакаря с тея вебсокети.
Аз с вю.джс не съм работил много. Реакта си правя един мидълуеър да тъпче у редъкса и съм пей сърце. Файърбейс не съм ползвал.
Иначе аз залитам по това:
След, като ядох бахура няколко пъти с Реакт и клиента иска SSR накрая все завършвах с карбонара.
Ето още една алтернатива да погледнеш: https://fastapi.tiangolo.com/advanced/websockets/ . Не съм работил с тоя фреймуорк, четох му документацията и ми хареса доста. Предвид предния ми проект крудове на ларавел + опън апи докс, пишеш кат хамал обмислях надлъжно рязане на вени...
 
Аз също си играх със сокети и пхп и за съжаление още е hit'n'miss на моменти. Така и не разбрах дали е някакъв състезателен процес, но от време на време се разминаваха нещата.

За node app ти препоръчвам next.js - full fledged framework, а не просто библиотека. Има си ORM, който работи с mysql. Мисля че има и опция без typescript, но го ползвах само за малко.
Специално за сокети не съм го ползвам, но предполагам че щом върви на node би трябвало да се справя.

По принцип можеш да направиш и всичко в един сокет, но логиката в един момент ще се натовари твърде много.

Относно web sockets vs ajax ping - web sockets every single time. Можеш да видиш и дали webRTC ще ти свърши работа в този случай - можеш да пуснеш видео, чат или file sharing между няколко души без намесата на сървър (освен в началото, за да ги свърже).
Последно като го ползвах и правеше някои проблеми, но може вече да са ги пооправили.
 
Това featherJS изглежда интересно, ама реално не е бек енд , нито фронт енд, а стои между тях така ли? И се мъчи да ти направи лесен CRUD между DB и фронта? Или не съм разбрал?



"Най-лесно и бързо с Firebase." - то лесно ако бек енда не можеш да си направиш, при мен е обратното, вюто ще е проблемно докато го изхакаря с тея вебсокети.
Feathers си е бекенд, нещо като надстройка на Express.

Firebase ти праща автоматично всяка промяна в данните, т.е може да го закачиш директно към Vue-то и ще ти ъпдейтва интерфейса и всичко останало.

ПП. Може и да бъркам нещо че мина време откак ползвах.
 

Тая статия обясни доста неща, оставям ако на някой му е интересно, разликата и детайлни обяснения на Polling/SSE/WS
 
За затваряне - говорих със собственика на keymash.io - целия стак ще е друг, никакво пхп - като ще сме модерни , да сме най :D React/Next/Node/Express / MongoDB.
 
Мисля, че отбелязах. Добре, че не загуби време в умряла кауза.
 
За затваряне - говорих със собственика на keymash.io - целия стак ще е друг, никакво пхп - като ще сме модерни , да сме най :D React/Next/Node/Express / MongoDB.
Направи един гитхъб и давай да гледаме
 
Ремайнде, тая игра прайвит репо ли е? Ако искаш метни едно публично и да трейнвам и аз бекенд :D. Винаги ми липсват идеи какво да направя, когато уча нещо. Иначе ще пиша голанг ако си навит.
 
Ремайнде, тая игра прайвит репо ли е? Ако искаш метни едно публично и да трейнвам и аз бекенд :D. Винаги ми липсват идеи какво да направя, когато уча нещо. Иначе ще пиша голанг ако си навит.
Private е, ако разбираш от ExpressJS , може да ми трябва помощ.
 
А нодджс не ми се пише (много ми е саклетен ерор хендълинга) :). Идеята беше да пиша паралелен бекенд с теб. А тасковете да идват от тебе, че мен яко ме мързи да мисля УИ и какво му трябва на бекенда. Ако искаш пускай ми таскове, хем ще си трейнвам, хем може да ти хареса ГО-то.
 
Ок Дай с юзъри АПИ, ей ти филда
users
-id
-uuid
-name
-username
- password /nullable
-verified_at /nullable / datetime
-email / nullable
-slug /string
- role_id / integer
-is_banned / bool
-banned_reason / string
- created_at /datetime
- updated_at / datetime
- deleted_at /datetime
- is_deleted /bool
- social_id /integer
-social_provider /string
-age /integer
-city /string
-about_me / text
-is_active /bool



user_actions
- user_id
- action /string
- method /string
- created_at /datetime


user_stats
-user_id
-ip_adress
- browser_used
- blabla още 3-4 дето не са важни сега.


user_role
-uuid
-name
-slug


user_games
- не съм го доизмислил това.



Това го имам към mysql де, ама ако ти се занимава наистина паралелно, драсни по вайбър 0877 41 38 44 , може да си направим нещо като challenge, тъкмо и да не губя много време като знам, че някой коди с мене. Това трябва да го конвъртна на NoSQL, и да направя 1-2 страници на tailwind до края на седмицата, да минават през react , после ще мисля играта как да стане и какво да се пази точно и по какъв начин като статистика, първо сингъл плейъра , после онлайна ще правя, че там ще видя зор със сигурност.



 
Последно редактирано:

Горе