Существуют различные формы чата, поэтому ответ зависит от реализации / веб-сайта. Основными методами являются либо прямой чат «клиент-клиент», где веб-сайт предоставляет интерфейс приложения и облегчает рукопожатие, чтобы познакомить двух пользователей друг с другом (вы не знаете, как связаться с человеком B, они не Вы знаете, как подключиться к вам, но вы оба знаете, как подключиться к сайту, и сайт договаривается о том, как вы двое подключаетесь друг к другу). Это имеет огромное преимущество для операторов сайта, поскольку для них это ничья (зайдите на мой сайт, и вы можете общаться), но они не обременены накладными расходами на фактическую обработку / пропуск всего трафика.
Другой наиболее часто встречающийся метод больше похож на то, что вы изначально думали. Вы можете использовать Facebook в качестве примера этого. Вы отправляете сообщение, и оно отправляется на сервер сайта, регистрируется в их журналах, хранится в их базах данных и т.д. Сообщение также отправляется получателям, будучи доступным в базе данных, когда приложение человека Б выполняет поиск. Существуют перехватчики и обратные вызовы, которые позволяют получателю знать, что новое сообщение ожидает, и его приложение загружает его, как только оно получает уведомление, создавая видимость мгновенного прямого обмена сообщениями; но на самом деле все это служит контентом для хостинга.
Легко сказать. Прямые сообщения от клиента к клиенту не будут иметь историю, которая следует за вами в разные браузеры (приложение может хранить историю чата на локальном компьютере, но оно не будет передаваться на другой компьютер, поскольку этот другой компьютер не был частью оригинальное прямое общение). Чат, проходящий через / сохраненный на веб-сайте, чаще всего имеет предыдущую историю чата, которая будет следить за вами (поскольку все ваши чаты отправляются и сохраняются на сайте, опять же, Facebook является отличным примером).