Извините за расплывчатый ответ, но здесь идет речь: вам нужно «выталкивать» текст чата в каждое соединение для данного идентификатора пользователя, а не просто отвечать на «извлечение» из данного соединения / сеанса.
Я не знаю, как работает ваш клиент, но если он запрашивает обновления, вам, вероятно, нужно сохранить в базе данных изображение последних сообщений для каждого пользователя, а затем получить все соответствующие обновления для этого пользователя из БД, а не просто связывать чат с сеансами «точка-точка».
Grr. У меня нет времени, чтобы объяснить это лучше сейчас ...
Создайте некую «заданную» структуру данных для каждого разговора, идентифицируя вовлеченные сеансы (и, следовательно, пользователей), независимо от того, является ли это один на один или большая группа. Составьте список сообщений для каждого разговора, упорядоченный в хронологическом порядке, который вы можете отсканировать, чтобы обновить отображение каждого клиента, предоставляя любые еще не просмотренные сообщения.
В качестве комментария к самому вопросу: кто-то высказал мнение, что «это было сделано», загрузите код. Возможно, это верный момент, а может и нет. Если вы можете найти существующую кодовую базу в форме, которую вы можете охватить и расширить, прекрасно. Если нет (потому что это домашнее задание или потому что корпоративная политика гласит: «делай это с нуля, здесь и сейчас», то, значит, загрузка «решения» не является действительной критикой, не так ли?