Я пишу сервер чата на основе Java, и в настоящее время мой дизайн основан на следующем: -
когда человек в комнате чата отправляет сообщение, класс комнаты чата на стороне сервера отправляет одно и то же сообщение каждому участнику комнаты в цикле. Очевидно, что это плохой дизайн, потому что сетевые вызовы делаются отдельным участникам цикла. Следовательно, например, предположим, что в чате находятся 10 человек. Когда один пользователь отправляет сообщение, класс чата отправляет одно и то же сообщение в цикле всем 10 людям. скажем, у 5-го человека в цикле дрянная связь, это повлияет на время, когда шестое ... 10-е лицо увидит сообщение.
если я перейду с одноадресной на многоадресную рассылку для комнаты, как мне получить частный IP-адрес группы многоадресной рассылки для комнаты чата? Кроме того, кажется чрезмерным иметь отдельные группы в чате.
Одна из основных проблем заключается в том, что когда я отвечал пользователям в комнате через цикл, метод, который отправлял данные через сокет-соединение, был блокирующим. Следовательно, я думаю, что если я использую неблокирующие сокеты NIO и затем отправляю сообщение получателям в цикле, это решит проблему?
Есть ли другие хитрые приемы, которые можно сделать, чтобы оптимизировать отправку данных получателям в комнате?