Ok, więc do rzeczy :)
Po pierwsze nie jest trudno się w wgryźć w temat, bo WebRTC jest dobrze opisana i udokumentowana:
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API
Na dodatek z implementacją WebRTC na potrzeby takiej małej aplikacji nie ma większych problemów.
Mamy tylko jeden strumień (dane) pomiędzy użytkownikami, którego stan obserwujemy.
Co innego w bardziej złożonych aplikacjach gdzie mamy strumienie video, audio, danych, połączenia punkt<->wielopunkt, ... ale to nie ten przypadek.
Wiadomo trudnością w aplikacjach sieciowych jest potrzeba reagowania na potencjalne problemy z połączeniem, a te mogą się pojawić spontanicznie.
WebRTC jest w stanie się "naprawić" tzn wejść w stan "disconnected" i po rozwiązaniu problemów wrócić do stanu "connected".
Ciężko jest jednak takie zachowanie wymusić, w sieci nic nie znalazłem jak symulować problemy z połączeniem via webrtc,
a odłączanie co chwila laptopa od wifi jest męczące, niepewne i w ogóle do d... :)
Dlatego jeśli strumień danych zostanie nawet chwilowo "uszkodzony", traktuje to jako całkowitą utratę połączenia.
Zadbałem o czytelne informowanie uczestników gry o tym fakcie oraz o możliwość ponownego dołączenia do tej samej rozgrywki.
Gdyby udało mi się znaleźć odpowiednie narzędzie do symulowania problemów z połączeniami to chętnie bym dodał aplikacji więcej "sprytu" :)
Może ktoś z Was mógłby coś podpowiedzieć w tej materii.
poza tym korzystanie z webrtc wymaga:
- postawienia serwera STUN/TURN na jakiejś maszynie w sieci, do translacji NAT
- posiadanie kanału komunikacji do początkowej negocjacji połączenia WebRTC, np serwera websocket
Minusem jest na pewno brak wsparcia przez wszystkie przeglądarki, działa bez problemu w FF, CH, O.
Trudno też testować całość. Testowanie ma sens jeśli uruchamia się aplikacje z dwóch różnych sieci.
W sieci lokalnej nie ma translacji NAT, połączenia jest zestawiane błyskawicznie, a komunikacja praktycznie bez opóźnień.
W warunkach domowych mogłem potestować jedynie na szybkim połączeniu stacjonarnym (100 / 10 MB), mobilnym (1 / 0.25 MB) i komórkowym lte.
Działało, a opóźnienia były na tyle małe, że nie psuły przyjemności z gry :)
Tyle w skrócie z moich przemyśleń :D