My UpWork customer requested the core of a communications system among two different user roles within one App. The goal was to communicate passengers and drivers. This was achieved thanks to the XMPP protocol, a Google Cloud Connections Server and an App Engine Java Application to register users and drivers.
The graph on the right side of these lines summariezes the architecture of the protocol. This approach and a an additional state diagram was used to move the app behaviour according to the user UI inputs and the incoming/outgoing messages.
Additionally the app counts with OAuth2 for user signin and the App behavies differently depending on the type of user associated in the backend with the email.
Marc Farssac