XMPP сервера как правило работают довольно-таки быстро при немало количестве пользователей онлайн. Но там нужно еще решить проблему с хранением истории и поиском по ней. Не могу сказать, насколько удобно этот функционал перекладывать полностью на сервер.
Когда делал подобный функционал, решил не заморачиваться, и хранить историю в базе сайта. Клиент цепляется к XMPP через JS (Strophe). История при этом сохраняется аяксом. Кривовато, но ничего красивее быстро не придумал.