Многопоточное приложение RESTful с использованием WebSocket (Java MVC) - PullRequest
0 голосов
/ 16 февраля 2020

Я создаю шахматное веб-приложение. Он имеет RESTful MVC java задний конец. В настоящее время я сделал процесс регистрации, входа в систему, аутентификации и сброса пароля. Это было довольно просто. Теперь я должен выполнить роль, в которой будут происходить все игры в шахматы.

1. У меня есть класс GameController, в котором будет вызываться метод startGame(UserDetails user), если пользователь захочет играть с кем-то. И у меня будет несколько синхронизированных List пользователей. Каждый пользователь, который нажимает кнопку «играть в быструю игру» на своей клиентской стороне, будет сохранен в этом List, а затем будет связан с другим случайным пользователем. После этого будет создан новый поток с соединением WebSocket между этими пользователями, в котором они смогут обмениваться своими шахматными ходами.

Вопросы: Как перенаправить пользователя в его пользовательскую конечную точку Websocket? Должен ли я передать конечную точку как returnValue startGame(UserDetails user) метод контроллера? Если да, то будет ли он поточно-ориентированным, поскольку метод startGame(UserDetails user) должен быть использован по крайней мере еще одним пользователем до создания конечной точки Websocket?

2. Должен быть какой-то класс отвечает за сопряжение пользователей постоянно, если в очереди не менее 2 пользователей. Кроме того, он должен группировать пользователей в соответствии с их рейтингом, иначе слабые игроки будут в паре с сильными. И никому из них не понравится игра.

Вопросы: Как сделать процесс постоянного сопряжения? Есть какой-то правильный шаблон или, может быть, я должен просто использовать какой-то метод do while()? Как группировать пользователей по рейтингу? Должен ли я добавить всех пользователей в 1 общий List, а затем отсортировать их по рейтингу, или я должен сначала отсортировать пользователей и только потом добавлять их в соответствующий List? Какой тип коллекции подойдет для этого случая?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...