Отпишусь только за XMPP.
Можно обойтись без серверной части и реализовать все на клиенте. Для этого подходит
Strophe.js
Если же отдано предпочтение спрятать большинство логики в сервер, реализация очень хорошо ложится на NodeJS с его событийно-ориентированным подходом. Незаменимым в таком случае станет
node-xmpp вокруг которого можно строить свою реализацию, или расширять
node-xmpp-client