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

Reply via email to