BTW Sebastien has modified jquery-ui dialog buttons, so now each has a name, you might wand to try to write some UI tests (using wicket tester or selenium :)) )
On Wed, Aug 24, 2016 at 10:22 AM, Maxim Solodovnik <solomax...@gmail.com> wrote: > Some actions can be done on the client only (without roundtrips to the > server :) not much of them, but it can easily be done :)) > > On Sun, Aug 21, 2016 at 2:14 PM, seba.wag...@gmail.com < > seba.wag...@gmail.com> wrote: > >> Yeah same here. Even more confusing when I look at it and kind of >> remember how it is basically mirroring some of the code and structure that >> initially was in the OpenLaszlo client :D >> >> But overall I think it's pretty cool how less code you can write the UI >> with. My only concern with Wicket is that you constantly hold the entire UI >> model also on the Server. Which means UI interactions actually create also >> load on the server. I think this is a manageable risk. But will be >> something we need to be careful with when thinking about scaling this to >> large scenarios. >> >> Another potential modularisation for the future would be to separated the >> conference room UI from the admin/profile/settings UI panels. This would >> make it easier in the future to plug another conference room UI into it. >> And the admin panel does not change that often. While the conference room, >> with all the speed at which the UI frameworks change could mean we got to >> replace it in a few years again as we might want to use some specific UI >> framework that has better support for real-time communication. >> >> Thanks, >> Seb >> >> >> >> >> >> 2016-08-21 14:27 GMT+10:00 Maxim Solodovnik <solomax...@gmail.com>: >> >>> by design client is being created in websocket.onConnect method and >>> being destroyed in websocket.onDisconnect (something like this) >>> I'll try to double check all this on all steps >>> Then can fix, and/or describe :) >>> I wrote this loooong time ago, need to refresh my memories :) >>> >>> On Sun, Aug 21, 2016 at 11:24 AM, seba.wag...@gmail.com < >>> seba.wag...@gmail.com> wrote: >>> >>>> Hi Maxim, >>>> >>>> yeah I understand, I think those steps: >>>> >>>> 1) change right for the particular user >>>> 2) send rightUpdated event >>>> 3) each user will update their list with the data from server Hashmap >>>> >>>> When you say (3) "each user will update their list" => You mean the >>>> visible user list right? Cause that part is done. >>>> >>>> => And the rest too. It seems like the issue with (1) is that it does >>>> not change the right in the RoomPanel.getClient() [which links through to >>>> the MainPage.client]. >>>> It seems a bit strange as you request the entire list from >>>> getRoomClients and the flag seems to be correctly there. >>>> >>>> I think this is also the issue when you leave the room and re-enter. It >>>> kind of assumes you still have all the rights from the previous session as >>>> the MainPage.client was not reset when you leave and enter to the defaults. >>>> >>>> Thanks, >>>> Seb >>>> >>>> >>>> 2016-08-21 14:05 GMT+10:00 Maxim Solodovnik <solomax...@gmail.com>: >>>> >>>>> All clients are being stored in huge hashMap on the server >>>>> the idea was >>>>> 1) change right for the particular user >>>>> 2) send rightUpdated event >>>>> 3) each user will update their list with the data from server Hashmap >>>>> I'll double check this next week >>>>> >>>>> On Sun, Aug 21, 2016 at 10:57 AM, seba.wag...@gmail.com < >>>>> seba.wag...@gmail.com> wrote: >>>>> >>>>>> I understand that you want to get a stable version out. So >>>>>> performance is second priority. But you agree to the maths? It's quite >>>>>> obvious to me that you will run into issues with large number of users >>>>>> with >>>>>> that approach. Especially since the re-rendering of the user list happens >>>>>> on every right change too. It will re-render the list on every >>>>>> participant >>>>>> change. Not just when a new user arrives in the room. >>>>>> >>>>>> Btw the issue in the user list when the "actions" panel doesn't >>>>>> become visible: My use case is: Moderator clicks on the "Grant moderation >>>>>> to client xyz" button in the user list. Then on the receiving end, the >>>>>> status light changes but the actions panel is not there (not on hover, >>>>>> cause the actions-div is missing) >>>>>> >>>>>> And I think the main issue here is that when this event is propagated >>>>>> to each client, all you send at the moment is >>>>>> RoomMassage("rightUpdated"). >>>>>> However, this will not update actually the "Right" on the receiving end. >>>>>> It >>>>>> just re-renders the user list by calling "populateItem' but when the >>>>>> populate runs through the list: >>>>>> >>>>>> actions.setVisible(room.getClient().hasRight(Right.moderator)); >>>>>> >>>>>> room.getClient().hasRight(Right.moderator)=> is still false >>>>>> >>>>>> cause it has actually never been updated on each participant. >>>>>> >>>>>> The status light changes from green to red. But that is because this >>>>>> compares the right to the ListItem<Client> item, not the "current" >>>>>> RoomPanel::getClient() >>>>>> >>>>>> If you look at the Flash/ScopeApplicationAdapter version, it actually >>>>>> always sends around the entire "client" object. The reason for that was >>>>>> that it is really complicated to figure out which attribute has changed >>>>>> and >>>>>> then write a custom code for each attribute change. >>>>>> >>>>>> I think that part is missing yet for the Wicket/HTML version. >>>>>> >>>>>> It seems to me we would need to add either the Client or the >>>>>> Set<Right)> to the RoomMessage and pass that around + update on the >>>>>> receiving end. >>>>>> >>>>>> What do you think? >>>>>> >>>>>> Thanks, >>>>>> Sebastian >>>>>> >>>>>> >>>>>> 2016-08-21 13:18 GMT+10:00 Maxim Solodovnik <solomax...@gmail.com>: >>>>>> >>>>>>> Thanks for the pointer, >>>>>>> but so fat I see no performance degradation >>>>>>> I'll optimize things as soon as any issues will arise >>>>>>> >>>>>>> currently flash room is unable to hold more than 10 people >>>>>>> (according to one of the user report) >>>>>>> >>>>>>> On Sun, Aug 21, 2016 at 8:35 AM, seba.wag...@gmail.com < >>>>>>> seba.wag...@gmail.com> wrote: >>>>>>> >>>>>>>> Hi Maxim, >>>>>>>> >>>>>>>> I have seen an example where we store the firstname/lastname in the >>>>>>>> database instead of the session of the "Client". >>>>>>>> >>>>>>>> RoomClientPanel.java::43 >>>>>>>> >>>>>>>> User u = getBean(UserDao.class).get(c.getUserId()); >>>>>>>> >>>>>>>> Just please keep in mind that access the database is always >>>>>>>> expensive. It's not really suited for our real-time communication >>>>>>>> conference room. For instance if there are 500 users in a room you >>>>>>>> have 500 >>>>>>>> times a select user.* from users where id = xyz. And that is for every >>>>>>>> user >>>>>>>> that enters the room. >>>>>>>> >>>>>>>> So 5 users entering with 500 users in the room = 5x500 = 2500 >>>>>>>> select queries. >>>>>>>> >>>>>>>> 100 users entering with 200 users in the room = 100 x 200 = 20000 >>>>>>>> selection queries. >>>>>>>> >>>>>>>> Just for entering the room. >>>>>>>> >>>>>>>> It's just like one of those lessons learnt from past OpenMeetings >>>>>>>> implementations: >>>>>>>> Do not access the database during the real-time communication part >>>>>>>> of a conference room. It just doesn't scale. >>>>>>>> Session vars should be really in the session, not in the database. >>>>>>>> >>>>>>>> But it's really more generic: The real-time communication tasks >>>>>>>> like: userlist, activities, whiteboard events => There should be >>>>>>>> really no >>>>>>>> link from those components into the Database. And if so you have to be >>>>>>>> really careful to make it not interrupting, async and the impact of >>>>>>>> scaling >>>>>>>> with 500++ users in a conference room. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Sebastian >>>>>>>> >>>>>>>> -- >>>>>>>> Sebastian Wagner >>>>>>>> https://twitter.com/#!/dead_lock >>>>>>>> seba.wag...@gmail.com >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> WBR >>>>>>> Maxim aka solomax >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sebastian Wagner >>>>>> https://twitter.com/#!/dead_lock >>>>>> seba.wag...@gmail.com >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> WBR >>>>> Maxim aka solomax >>>>> >>>> >>>> >>>> >>>> -- >>>> Sebastian Wagner >>>> https://twitter.com/#!/dead_lock >>>> seba.wag...@gmail.com >>>> >>> >>> >>> >>> -- >>> WBR >>> Maxim aka solomax >>> >> >> >> >> -- >> Sebastian Wagner >> https://twitter.com/#!/dead_lock >> seba.wag...@gmail.com >> > > > > -- > WBR > Maxim aka solomax > -- WBR Maxim aka solomax