So... Why does Alice and Bob need to be online to be able to communicate? Can't Alice place a message in a outbox while waiting for Bob to be online?
Also, couldn't we avoid having a server for group chat based on same idea (cache messages in outbox until other parties come online?)