Candy – a JavaScript-based multi-user XMPP chat client
candy-chat.github.io
candy-chat.github.io
if you like to :)
2) how would you implement that without relying on a central server?
I'd assume that Candy works nicely with single-user chats too.
As for 2), one trivial solution would be to stimulate "true" multi user chat by simply having n x n regular 2-party chats merged into a single view. Should scale for most reasonable chat room sizes.
Considering it is javascript based, I could extend it to support it if I truly wanted to.