Serveur WebSocket avec Tyrus : code thread safe ?
Bonjour,
Je viens de me lancer dans un petit projet personnel de jeu multijoueur avec un serveur Java WebSocket utilisant la lib Tyrus.
J'ai de l'expérience dans le développement, mais très peu en Java et surtout pas en application multi-threading, alors je me pose des questions basiques :
Chaque ServerEndPoint (la connexion avec le client WebSocket côté serveur) peut lire et écrire sur des objets qu'il partage avec les autres ServerEndPoint (les modèles du jeu, qui stockent l'état de la partie), et en regardant dans le débogueur je vois que chacun est susceptible de s'exécuter sur son propre thread "Grizzly-worker", donc à priori je devrais rendre mon code thread-safe, mais n'y connaissant rien je me dis que Tyrus gère peut-être ça de son côté, pour rendre les ServerEndPoint thread-safe ? Est-ce seulement possible ? :)
J'ai fait quelques recherches mais rien trouvé de spécifique sur Tyrus, pour l'instant je lis de la doc sur les threads et je me demande comment je vais pouvoir gérer ça. Par exemple quand je créé un message pour le client en lisant les données d'un modèle, il faudrait empêcher un autre thread client de modifier ce modèle pendant la création du message. Actuellement chaque ServerEndPoint accède aux modèles, peut-être devrais-je ajouter un adaptateur entre les ServerEndPoint et les modèles, et qui synchronize les accès aux modèles ?
Des questions de débutant je vous dis... mais Ô combien importantes, surtout que je risque de devoir refactoriser assez large si j'ai pas choisi la bonne conception... :mouarf: