Итак, насколько я могу судить, проблема в том, что когда пользователь Jabber на другом конце отвечает. Проблема там, по крайней мере частично, заключается в том, что пользователь отвечает другому пользователю на сервере Jabber, но вы хотите, чтобы скрипт php знал, что этот ответ произошел без удержания открытого соединения (что имеет смысл, так как скрипт больше не работает, наверное).
Один из вариантов, хотя и очень глупый, это:
Иметь скрипт php, который может посредничать с сервером Jabber для отправки и получения для пользователя на вашей странице,
Используйте AJAX для отправки сообщений пользователю (AJAX будет указывать на приведенный выше скрипт, скрипт будет отправлять сообщение.)
Имейте бесконечный цикл Javascript, который пингует один и тот же скрипт каждые 10 секунд или около того, проверяя, есть ли сообщения. Если они есть, они передаются обратно клиенту и выводятся пользователю.
С вышеуказанным есть только две проблемы:
1) Если пользователь не подключен во время передачи сообщения, будет ли скрипт php по-прежнему видеть / получать сообщение?
2) Цикл на стороне клиента, который делает ajax-запросы каждые 3 секунды, вероятно, будет огромной утечкой.
Решение 2:
OpenFire jabber сервер. Он поставляется со встроенным клиентом веб-чата и имеет надстройку под названием Fastpath, которая предназначена для обработки чатов на основе HTML на стороне клиента (например, функция «чат с агентом сейчас!» На слишком многих страницах поддержки).
Мы используем это на работе, и оно очень настраиваемо, может быть интегрировано с другими скриптами (например, если вам нужен скрипт, который заполняет данные пользователя из его логина, или добавляет какой-то пользовательский аватар или что-то еще), и у него (OpenFire) есть множество других расширений и дополнений, которые, если это не то, что вам нужно, вероятно, у них есть то, что вы ищете.