I have a design decision to make. I need your advice.
Requirements:
Option 7 Why don't you go for XMPP?
It's a standard
it allows messages in both directions.
you may use existing XMPP infrastructure (clients might connect using their Google Talk accounts for instance) or easily build your own using open source XMPP servers
I also like the fact, that you basically only write client code (as the server is also an XMPP client) - assuming server and client are both written in same language, you may even use the exact same code.
file transfers are supported.
easily extensible to your needs
it's buzzing (Google Wave) ;)
The only thing people might argue about is its efficiency - or the efficency of XML in general. I don't think it's a problem though.