Avatar

Employee

Hi,

We are planning on adding an Instant Messaging feature to an application used by two kind of users : customers and agents.

The goal is to allow text/audio/video chat (possibly with the three options simultaneously but most likely with either text or audio+video) with the following use cases:

  • Agent (1 or 2) <-> Customer (one-one or two-one)
  • Agent <-> Agent (multiple users)
  • Multiple opened chat session for a given user (mutiple windows similar to gmail)

We also need to display a list of users (both online and offline + capabilities (mic,webcam)) -> should we leverage some kind of main room for this as well?

So far we have identified three possible scenarios to achieve this:

  • One Room per chat/conversion : the user would need to create a new room from a template and send the url to other recipients (through a global message bus, maybe a global/general room). This also implies having multiple session opened as a user can have multiple one-one conversations
  • Create only  one room and use groupNames to manage the privacy of a conversation  but that seems to create one collectionNode per groupName and I’m not  sure how that will scale on the long run.
  • The  last option would be to send everything to a single collectionNode (like in  the simpleChatModel) and simply rely on the  recipiendIDs to manage the  privacy but that seems a bit overcomplicated to manage a conversation  with multiple users as we would first need to share the list of members for a given chat.

Would you guys have ideas or recommendations around this or maybe an Instant Messaging exemple?

Thanks,

Nicolas