Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

To create a room for every user or not?

Avatar

Level 2

My application requires that guest/participants do not need to login. They only enter names. Also the meetings are not scheduled. It's on walk in basis where host waits for the guests. In my case, I will have hundreds and eventually thousands of hosts. For every host, do I need to create a new room and allocate it to only that user? Is that how the rooms supposed to used or there is any other data structure such as groups which I can use? Are there limitations to how many rooms one application can create?

1 Accepted Solution

Avatar

Correct answer by
Former Community Member

If there are different hosts with no communications and you want to host simultaneously meetings, then you should use different rooms. However, if there is only one meeting at a time, you can use the same room.

Also, multiple rooms is advisable if there are a lot of users per meeting.

Thanks

Hironmay Basu

View solution in original post

8 Replies

Avatar

Former Community Member

When a meeting is running, is it one host for that meeting with his users ? If so, you can put them in different rooms. We don’t have limits on number of rooms but rather limit on number of users per room ( 5000). So, putting in more rooms improve the scalability. However, keep in mind that users simulataneously cant communicate between them in various rooms unless you are implementing those communication through server to server APIs.

Thanks

Hironmay Basu

Avatar

Level 2

Thanks Hironmay.

To anwer your question, yes, it is one host for one meeting. The users of different hosts never talk to each other. In fact, we do not want them to talk.

This is the use case to give you better idea. A lawyer is a host and his clients are the guests. We will have hundreds of lawyers and they do not talk to each other or the guests of the different lawyer never talk to each other. In fact, we do not want to them to talk for privacy reason. I am thinking , we can create room for each lawyer and persist it and the lawyer and his guest can use it whenever they want.

Do you still think creating a separate room for each lawyer is the best thing to do?

Avatar

Correct answer by
Former Community Member

If there are different hosts with no communications and you want to host simultaneously meetings, then you should use different rooms. However, if there is only one meeting at a time, you can use the same room.

Also, multiple rooms is advisable if there are a lot of users per meeting.

Thanks

Hironmay Basu

Avatar

Employee

Just to clarify, we currently don't offer any standard mechanism for users in one room to communicate with users in another room, so Hironmay comment "multiple rooms is advisable if there are a lot of users per meeting" really means that if are trying to decide between one single room with a lot of user where the users communicate with each other in groups (not all together) on separate "nodes" and multiple rooms, one per group, the multiple room solution scales better (because each room can run on a different server and load will be distributed between the least loaded servers)

In your particular case the easiest way to go is to have one room for each lawyer (basically name / associate the room with the lawyer username). This will save you for having to manage a pool of rooms.

There is no performance penalty in having a lot of "unused" rooms (and we are currently not charging for the disk space associate with a room). The only "disadvantage" of having a lot (in the thousands) of rooms is that if you try to list them using the server-to-server APIs the list operation will be very slow (and it will be "cut" at 1000 rooms). But direct access to a room is not affected by how many rooms are in your account.

Avatar

Former Community Member

Raff,

This use case is very similar to mine.  I also need multiple rooms (perhaps in the hundreds) where the users in each room won`t need to communicate with, or know about, one another.  My question is, should all the rooms be permanently created (i.e. a room is created whenever a new user joins my site), or should they be instantiated upon connection to LCCS?  I think the auto-generation method seems better, but how is this done?  Do I need the host to log in first so that the room is created, or can the guest log in and create the room?  In either scenario, how do both peers (and not others) find out about each other and the corresponding room they will "meet" in?  Is there some ID I need to generate on my end?

Sorry, but I am relatively new to LCCS and still trying to get my head around all this!

Thanks a lot!

Matt

Avatar

Level 2

I have a similary scenario that I am trying to solve for in the most efficient and scalable way.

In my case, I have many clients (companies) that each have many agents (solution providers)

who in turn would have one or many sessions with customers (solution seekers)

An example of this could be a one client who specializes in support services to all customers

who access the client's site. There are thousands of customers who access the client's site

and each customer is looking to connect with an agent for support solutions.

Each agent would be able to service one or more customers at any given time.

Now, my question is as follows. Should I setup one room per client (company) and handle

agents dynamically so that each agent has a user account as well as each customer.

Or, should I setup unique rooms for each agent to customer session on the fly and dispose

of such room at the end of a session (if that is even possible using code vs. doing this

manually).

Sorry guys. I am totally new LCCS and flash, for that matter.

Thanks,


Michael

Avatar

Employee

Both ways work (and both ways require some amount of coding). Here are a few ideas:

- Rooms are "manually" created by you (I mean, they don't get autocreate - you have to create them using our serverIntegration API). You can create the room when a user join your site (with a name associated to the username or the userid) or you can create a random room when a user wants to start a session.

- Use external authentication, even for guests users. With external authentication you can specify which user can access a room (the token grants permission for a user to enter a specific room, for only one session, at the specified role).

- How do peers find each other: that's a problem you have to solve It really depends on who your users are and how you are thinking they will interact.

     If a user enters a room you can have some data structure in your server that says that room is currently active with a host (then you generate an authentication token for the host and send him into the room)

     If another user can, for example, pick a random room to join, you just check your list for rooms with a host in it, pick one of them and generate a guest token for that user (and then send the user in that room)

Avatar

Employee

Same answer, you can do both

I wouldn't create a room per customer, but you could potentially create one room per agent. You'll need to build your own application that would allow your to select the correct agent given the customer needs, but you need to do that anyway.

Once you know the agent, again, having the agent always enter his/her room and wait for customers, or have the agent enter a random room and then pair it with a customer is pretty much the same.

Fixed rooms will save you to manage room creation/deletion (you will still need to create a room when a new agent joins a company and remove it when he leaves, but that can be part of the normal management of agents).

One feature that we are planning to add is rooms that "autodelete" when the session terminate, so you can easily create a random room on the fly and don't have to remeber to cleanup.

But basically I think what you do depends on a couple of workflows :

1) A host (teacher, agent, advisor) has routinely scheduled sessions with customers (or students). In this case it may be easier to have a fixed room for the host and direct the guests to that room for the scheduled session (again, using external authentication you can guarantee that only users registered or authorized for that session can join that room)

2) Two users (host/guest, agent/customer, two random users, etc.) wants to initiate an ad-hoc conversation. In this case it may be easier to create a room on the fly (or pick a room from a pool of existing rooms) and direct both users to that room.

As I said in the previous post the serverIntegration modules are your friends here: they have all the methods to create/delete rooms, create authentication tokens and in general manage your account.

The following has evaluated to null or missing: ==> liqladmin("SELECT id, value FROM metrics WHERE id = 'net_accepted_solutions' and user.id = '${acceptedAnswer.author.id}'").data.items [in template "analytics-container" at line 83, column 41] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign answerAuthorNetSolutions = li... [in template "analytics-container" at line 83, column 5] ----