Я пишу игровой сервер в Java. Как обычно в игровых серверах, я должен принимать данные, полученные одним клиентом, и распространять их по комнате клиента (другие клиенты). В настоящее время каждый клиент создает собственный поток и работает поверх этого. Однако у меня возникают проблемы с определением отношений между игроками. Как мне управлять чем-то вроде чата, где сообщение должно быть отправлено всем другим игрокам в одной комнате? Я думаю о чем-то вроде очереди сообщений, где все потоки будут часто искать сообщения и отправлять их своему собственному клиенту.Многопоточный сервер Java
Я также открыт для предложений, которые могут прерывать многопоточность сразу, но я не знаком с NIO, и сервер уже написан с использованием простых Socket
s и Thread
s.
Резюме: Как заставить моих клиентов (в потоках) разговаривать друг с другом? Или есть лучшая альтернатива не-резьба?
Использование некоторых фреймворков, таких как Netty, сделает вашу жизнь намного проще, а ваше приложение станет более масштабируемым. Я уверен, что передача данных подключенным клиентам становится простой задачей. Возможно, будет небольшая кривая обучения, но она того стоит. –
@JurgenCamilleri Я ахнул, когда я прочитал инструкцию по началу работы для netty! Так много «строителей» и «фабрик» заставляют меня плакать! знаете ли вы о лучшем ресурсе для его изучения или о том, что это истинный и проверенный способ? –
В моем опыте с Netty я только начал писать примеры и пробовать их сам; затем начал строить поверх них то, что мне было нужно, и отбросил то, чего я не сделал. Этот канал YouTube содержит ряд, который выглядит многообещающим: https://www.youtube.com/channel/UCIA0yteJXa5JgRqxFJYQbEQ –