Piszę czat w stylu discordowo/ircowym w celach hobbystyczno-rozwojowych. Motywuje fakt, że będę mógł go wdrożyć w pewnym serwisie czatowym zastępując obecne rozwiązanie, więc będzie sobie później gdzieś tam żył :)
Głównym komponentem projektu jest serwer komunikacyjny przyjmujący żądania HTTP i via WebSocket, obsługujący jednolity, autorski, tekstowy protokół. Serwer zaprojektowany z myślą o skalowaniu horyzontalnym, utrzymujący minimalny stan związany z obsługą bieżących połączeń z klientami. W centralnej części Redis, utrzymujący stan całej aplikacji i pełniący rolę brokera wiadomości, synchronizujący je między instancjami serwera. Swoją drogą, ostatnio wpadłem na DragonFly - 25-krotnie szybszy (wg autorów) zamiennik "drop in" dla Redisa, jak znajdę czas, to będę testować.
Serwer pisany w PHP 8.1 z wykorzystaniem ReactPHP dla wsparcia async IO, z wykorzystaniem zielonych wątków (fibers).
Oprócz tego biblioteka kliencka w TypeScript i klient w React Native (Expo + react-native-paper). Zobaczę jak mi to wyjdzie, w założeniu ma on być fulll RWD i działać również jako apka webowa.
W planach implementacja opcjonalnej komunikacji szyfrowanej (tu jeszcze nie mam podejścia :P) i rozmowy audio/video (prawdopodobnie z wykorzystaniem Jitsi) oraz archiwum rozmów (tu szukam rozwiązania, na oku ElasticSearch lub TypeSense - na pewno coś self hosted).
--
Biblioteka kliencka: https://github.com/szado/polfan-js-client-library
Robocza wer. dokumentacji: https://polfan.pl/v3/docs/
Pula zasobów napisana na potrzeby serwera: https://github.com/szado/reactphp-connection-pool
Strasznie trudno się przebić z nową biblioteką do zarządzania stanem w Reactcie (wiedziałem na co się piszę).
Piszę doksy, twittery, reddity, do youtuberów i nadal słabo mi idzie.
ALE każdemu, kto skomentuje ten post stawiam fizyczne, realne piwo kraftowe gdy moja libka będzie mieć już 1k gwiazdek!
Jak w nic w życiu czuję, że to pyknie (tylko może muszę jakieś artykuły jeszcze na medium napisać, albo może coś nagrać samemu na YT).
Co to za libka?
Tiny and powerful React hook-based state management library.
Właśnie zrobiłem nowe releasy, a w nich:
- Redux DevTools first-class support
- New demos
- Preventing occasional and theoretical events loss
- Docs, docs, docs
W ramach pracy magisterskiej robię aplikację mobilną w React Native. Projektuję ją sobie sam i jakże wielkie było moje zdziwienie gdy okazało się, że nie mogę znaleźć żadnej sensownej biblioteki do rozwijalnego Floating Action Buttona (to ten okrągły przycisk w prawym dolnym rogu aplikacji dla niezaznajomionych z nomenklaturą :D ).
Postanowiłem machnąć coś swojego, robiąc tym samym pierwszy krok w pisaniu reużywalnych komponentów. Jest to oczywiście jakiś tam drobny kodzik, który można sobie naklepać w pół godziny, ale i tak się cieszę, bo wyszło to całkiem sensownie, jest malutkie i rozszerzalne. Ze względu na fakt, że to moje pierwszy taki wyskok chętnie przyjmę konstruktywną krytykę na klatę :)
Szanowny Panie, jeśli liczy Pan na krytykę (konstruktywną albo totalną) to proszę takie wpisy zamieszczać w przeznaczonym do roastów dziale - czyli Oceny i recenzje :P
@andrzejlisek: ciekawa uwaga, rzeczywiście jest to irytujące. Taki bufor jest warty implementacji. @Riddle jakieś wskazówki? :)