Ну, звучит довольно рано, но вы могли бы сделать несколько потоков, или вы могли бы просто отскочить ваш цикл между новыми сообщениями от пользователя и проверять наличие новых сообщений.
Если вы читаете из InputStream
(или одного из его подклассов), вы можете вызвать метод available
, чтобы проверить и посмотреть, есть ли количество доступных байтов, если> 0 (если есть что-то, что нужночитать либо из других участников чата, либо из пользовательского ввода).
Итак, цикл:
- if (newMessages) ... публиковать новые сообщения ...
- if (newUserChat) ... отправить новое сообщение ...
Это в основном все, что нужно сделать.