Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

multiple room management -- best practice -- server side http api update?

Avatar

Level 3

Hi Folks, 

Some of the forum postings on multiple room management are over year old now.  I have student/tutor chat application which has been in the wild for 5 months now and appears to be working well.  There is a single tutor per room, multiple chats and soon to be a whiteboard per student, which is shared with the tutor in a tabbed UI. 

It is now time to fill out the multiple tutor functionality, which I considered and researched when building, but did not come to any conclusions.   I'm leaning towards a server side implementation.  Is there an impending update to the http api?

Here is what I understand to be the flow:

1) server side management of who is accessing the room

2) load balance and manage the room access 1 time user and owner session from the server side

3) for my implementation, a tutor will need to login to the room, in order for it to be available

4) Any reconnection would in turn need to be managed by the server side, and is really a special case of room load balancing.

My fear is that at some point I'm going to need access to the number of students in the room or similar and this is not available, so that I'll need client functionality, which will need update the server side manager.


As well, I'm concerned about delays on the server side access to which might create race conditions in a re-connect situation.  User attempts to reconnect, but server side manager thinks that the user is already connected.

Surely this simple room management has been built, does anyone have any wisdom they can impart?  Is there any best practice guidance or any samples?

Thanks,

Doug

2 Replies

Avatar

Employee

I am not really sure why you need to deal with reconnections. What is the use case ?

LCCS already takes care of users that may get disconnected from a room and tries to reconnect and also of the case where an FMS server fails (the room will automatically be restarted on a different server and all clients will reconnect and continue from where they got interrupted)

Also, what do you mean with load balancing ? Do you have a pool of rooms and need to decide which one is in use and assign new classes to rooms that are not in use ?

What server-side API do you think you need that are currently not available ?

Avatar

Level 3

Hi Raff, Thanks a ton for the response.

I wasn't clear on what I was calling load balancing.  What I mean by this is room assignment for student clients.  We have one tutor per room.  There are multiple students per room, but each is in their own one-on-one chat with the tutor.

I'm very much struggling with where to do the room assignment / room managemnt, on the server side or on the client side (if that is even possible).  In my testing it is taking upwards of 10 seconds minimum to get a list of rooms (4 virtually empty rooms) and to query the users in a single room (also a minimum of users/nodes in the queried room).   If after this point, I 'redirect' the student to the least full room, then the student incurs the cost of creating a new session and logging into the room.  As well I intend to do a bit of xml parsing, and other processing, so that 10 seconds is likely to grow.


Would I see better performance trying to do this in the client?

As far as the server side, at what point does a room go to 'not-active'?

When I'm querying the roomList, I am considered one of the 'OWNER' users in the UserLists.  At what point can it be safe to assume that I have left the room? 

Is there documentation on the meaning and lifecycle of the different status codes?  not-active,  not-running, and ok?  Are there others?

How much staleness can I expect from the server-side queries?

As far as feature set, the only thing that comes to mind is xpath and or wild card support for getNode() but i think this was mentioned in other posts.

Regarding the reconnection issues, I am timing out the student after inactivity, and this is probably by and large the bulk of my reconnect use cases.  This and any logout interaction from the student presents a use case where I  may want reassign the student return to the same room as before.  I can envision scenarios of a preferred tutor if available etc.  In this case, I'll need to know list of rooms.  In terms of reconnection failover, this is not not a LCCS / FMS issue.

Thanks again for responding.