Hello people,

We have a bug with reconnection. I did next steps for diagnosing it:
1. Increase connection attempts count to 300 (hibRtmpConnection.lzx:232)
2. Enter the room
3. Unplug network cable for a short time
4. User exited to dashboard

I repeated this test for 2.0,  but it was failed again. I did next
modification in hibRtmpConnection:

Index: WebContent/src/base/hibernate/hibRtmpConnection.lzx
===================================================================
--- WebContent/src/base/hibernate/hibRtmpConnection.lzx (revision 1485993)
+++ WebContent/src/base/hibernate/hibRtmpConnection.lzx (working copy)
@@ -64,6 +64,7 @@
     <attribute name="reconnectedRoomInstance" value="null" />

     <attribute name="reconnectionAction" value="false" type="boolean" />
+    <attribute name="connectionWasBroken" value="false" type="boolean" />
     <attribute name="reconnectObjRef" value="null" />

      <attribute name="userobject" value="null" />
@@ -195,6 +196,8 @@
     <method name="reconnectComplete">
          if (this.reconnectionAction){
             this.reconnectionAction = false;
+            this.connectionWasBroken = false;
+            this.counterror = 0;
             this.reconnectObjRef.reconnectSuccess();
         } else if (this.reconnectAfterRoomleft) {
             loadContentByTempActionForNavi();
@@ -213,21 +216,26 @@
                 new lz.labelerrorPopup(canvas,{errorlabelid:606});
                 canvas._loadingAll.hideContentOnly();
                 return;
-            } else if (this.reconnectionAction){
+            } else if (this.reconnectionAction && !connectionWasBroken){
                 this.connect();
-            } else if (this.reconnectAfterRoomleft) {
+            } else if (this.reconnectAfterRoomleft &&
!connectionWasBroken) {
                 if ($debug) Debug.write("this.reconnectAfterRoomleft:
",this.reconnectAfterRoomleft);
                 this.counterror=0;
                 this.connect();
             } else {
-             this.useRTMPT = true
+             this.useRTMPT = true;
                 var src = getUrl();
                 this.setAttribute('src',src);
                 //Debug.write("new src ",this.src);
-                if (this.counterror<3){
+                if (this.counterror<300){
                     this.counterror++;
-                    //Debug.write("try ",this.counterror,"one");
+                    Debug.write("try " + this.counterror);

 canvas.thishib.loaderVar.error.setAttribute('text',"try "+this.counterror);
+                    if (this.status ==
"NetConnection.Connect.NetworkChange") {
+                     this.reconnectionAction = true;
+                     this.connectionWasBroken = true;
+                    }
                     this.connect();
                 } else {
                     //Debug.write("connection failed");

Reconnection had started to work, but there were some isues:
1. It took around two seconds or more
2. Some video windows were needed to be reloaded
3. Sometimes the user had left the room after reconnection within 1-2
minutes

I think my way is not correct enough. Is there anybody who could recomend
better way of entering rooms?


2013/6/6 Alexei Fedotov <[email protected]>

> [Now with better list and subject]
>
> On Thu, Jun 6, 2013 at 3:31 PM, Alexei Fedotov <[email protected]>
> wrote:
> > [We have just discussed where this functionality vanished with Artyom
> > and Irina.]
>
> >
> >
> > On Thu, Dec 1, 2011 at 5:56 PM, [email protected]
> > <[email protected]> wrote:
> >> Hi German,
> >>
> >> I have moved your call to get the key into a more general loading
> sequence
> >> (r4648, r4649, r4650):
> >> In MainService there is a new method:
> >> public List<Configuration> getGeneralOptions(String SID) {
> >>
> >> the key will now only load one time: When the whole app is loaded
> >> (hibrtmpConection.lzx Line 632 instead of every time you enter the
> >> conference room.
> >> I guess we will have some more configs in the future to load initialy
> with
> >> this method.
> >>
> >> Calling a method when you enter a room in baseConferenceRoom is slightly
> >> dangerous:
> >> The OepnMeetings Client Application does re-connect the NetConnection
> >> _globally_ everytime you enter a room, cause it needs to change the
> >> connection URL / scope from:
> >> rtmp://$host:$port/openmeetings/hibernate
> >> to
> >> rtmp://$host:$port/openmeetings/$room_id
> >>
> >> (see for example participants.lzx Line 33 => disconnect() in the oninit
> >> method )
> >>
> >> So calling a method exactly when entering the room can have some
> unexpected
> >> side effects. Maybe there is not even a connection at this moment.
> >>
> >> The other reason for moving this remotecall away from
> baseConferenceRoom.lzx
> >> is:
> >> Entering a conference room should happens really fast, and actually the
> >> NetConnection will handles method calls sequencly, that means you can
> call
> >> 10 methods at the same time but actually the NetConnection does handle
> them
> >> One-By-One, not parallel. There is no plan to change that to a
> connection
> >> pooling yet.
> >> ... I've done some performance optimization in the past to change the
> >> NetConnection into a Connection Pool that uses some kind of
> "round-rubin"
> >> mechanism to get a free NetConnection, but OpenMeetings has no such
> >> optimization yet.
> >>
> >> Sebastian
> >>
> >>
> >>
> >>
> >> 2011/12/1 Maxim Solodovnik <[email protected]>
> >>>
> >>> Hello German,
> >>>
> >>> from my point of view 123 is not good enough for the end user
> >>> Can you enhance it to be "F12" or Ctrl+Shift+Esc, etc.?
> >>>
> >>> On Thu, Dec 1, 2011 at 19:47, German Grekhov <[email protected]
> >
> >>> wrote:
> >>>>
> >>>> Hello, Sebastian.
> >>>>
> >>>> I have done my work. I've made refactoring you asked and also added a
> key
> >>>> to the configuration management. Now it contains
> "exclusive.audio.keycode"
> >>>> key that is 123 by default (F12). Revision 4647.
> >>>>
> >>>> German.
> >>>>
> >>>> 2011/11/24 [email protected] <[email protected]>
> >>>>
> >>>>> *In the canvas there is a function "setMuteStatus"*
> >>>>> => In mainMethods.lzx Line: 781
> >>>>>
> >>>>> you can call this function with canvas.setMuteStatus(rcl) (where rcl
> is
> >>>>> a RoomClient object/array)
> >>>>>
> >>>>> Sebastian
> >>>>>
> >>>>> 2011/11/24 [email protected] <[email protected]>
> >>>>>
> >>>>>> Also I think you can very simple integrate it with the current mute
> >>>>>> functionality:
> >>>>>> In the canvas there is a function "setMuteStatus" that expects a
> >>>>>> "RoomClient" object.
> >>>>>>
> >>>>>> You could modify this function, and it will update the status icons
> in
> >>>>>> the user list according to your settings.
> >>>>>>
> >>>>>> If somebody is "muted" the icons in the user-list have to show that.
> >>>>>>
> >>>>>> Sebastian
> >>>>>>
> >>>>>> 2011/11/24 [email protected] <[email protected]>
> >>>>>>
> >>>>>>> And it would be good if you could extend your logic to be able to
> >>>>>>> change the key-configuration:
> >>>>>>>
> >>>>>>> The F12 button is maybe not the optimum (you can think about the
> >>>>>>> number of emails in the mailing list  from people "where can I
> change the
> >>>>>>> key code" :))
> >>>>>>>
> >>>>>>> So probably you could set this key in Administration >
> Configuration.
> >>>>>>>
> >>>>>>> There is a hook in the client that loads a number of config keys
> from
> >>>>>>> the server to the client, I can lookup this hook if you can't find
> it.
> >>>>>>> So it would be very handy if you could make this config key
> >>>>>>> configurable in the global configuration.
> >>>>>>>
> >>>>>>> Sebastian
> >>>>>>>
> >>>>>>> 2011/11/24 [email protected] <[email protected]>
> >>>>>>>
> >>>>>>>> ++ don't forget to put your keydownhandler in ALL conference
> rooms,
> >>>>>>>> but just the roomtype "conference".
> >>>>>>>> Or even better put the keydown listener in a global file that does
> >>>>>>>> never change. You need to check then
> >>>>>>>>
> >>>>>>>> if (canvas._videocontainer != null) {
> >>>>>>>> ...
> >>>>>>>> }
> >>>>>>>>
> >>>>>>>> to see if there is currently a video conference room open.
> >>>>>>>>
> >>>>>>>> Sebastian
> >>>>>>>>
> >>>>>>>> 2011/11/24 [email protected] <[email protected]>
> >>>>>>>>
> >>>>>>>>> Hi German,
> >>>>>>>>>
> >>>>>>>>> the patch seems to be okay, didn't test yet but actually it only
> >>>>>>>>> changes 3 files, so it should be no big deal.
> >>>>>>>>>
> >>>>>>>>> In the baseVideoObject.lzx
> >>>>>>>>> var itIsMyVideo = (canvas.publicSID == this.publicSID);
> >>>>>>>>> this is not needed, there is a param: isremote
> >>>>>>>>> So you can write:
> >>>>>>>>> if (canvas.ismoderator || !this.isremote) {
> >>>>>>>>>
> >>>>>>>>> Instead of x="${(parent.width)*0.5 - 20}"
> y="${(parent.height)*0.5 -
> >>>>>>>>> 20}"
> >>>>>>>>> you could also use: valign="middle" align="center"
> >>>>>>>>>
> >>>>>>>>> Lets commit it, I will test the UI result later.
> >>>>>>>>>
> >>>>>>>>> Sebastian
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> 2011/11/23 German Grekhov <[email protected]>
> >>>>>>>>>>
> >>>>>>>>>> Sebastian,
> >>>>>>>>>>
> >>>>>>>>>> I have made a patch against current trunk. This patch is not
> full
> >>>>>>>>>> because there is no compatibility with current microphone
> buttons on the
> >>>>>>>>>> user list. Also this patch doesn't contain those new room type
> that I told
> >>>>>>>>>> about. I just want to show you the idea, just want to show our
> >>>>>>>>>> implementation of the functionality for this room:
> >>>>>>>>>> 1) every user can give himself an exclusive audio
> >>>>>>>>>> 2) a moderator can give everyone an exclusive audio
> >>>>>>>>>> 3) you can also press F12 to give yourself an exclusive audio
> >>>>>>>>>>
> >>>>>>>>>> There is a new picture of microphone in the patch.
> >>>>>>>>>>
> >>>>>>>>>> Best regards,
> >>>>>>>>>> German Grekhov.
> >>>>>>>>>>
> >>>>>>>>>> 2011/11/22 [email protected] <[email protected]>
> >>>>>>>>>>
> >>>>>>>>>>> Ok!
> >>>>>>>>>>>
> >>>>>>>>>>> is your patch developed against trunk ?
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Sebastian
> >>>>>>>>>>>
> >>>>>>>>>>> 2011/11/22 German Grekhov <[email protected]>
> >>>>>>>>>>>>
> >>>>>>>>>>>> Ok, maybe I have already forgotten why you didn't include
> this to
> >>>>>>>>>>>> the trunk...
> >>>>>>>>>>>> But we have moved this button to the video-view after
> receiving
> >>>>>>>>>>>> the users feedback. Those placement of button was very
> unhandy for users and
> >>>>>>>>>>>> they didn't clearly understand how to use it and how it
> worked. But this
> >>>>>>>>>>>> implementation was successfully received by them. It is very
> clear way of
> >>>>>>>>>>>> giving exclusive audio.
> >>>>>>>>>>>>
> >>>>>>>>>>>> I remember that you wanted to give this button more complex
> >>>>>>>>>>>> logic. But I think that this logic is very complex for users
> too. They want
> >>>>>>>>>>>> to use some fast and handy ways (and attractive). Your
> solution is not so
> >>>>>>>>>>>> clear, fast and handy for a simple user's work. So, I offer
> you look at our
> >>>>>>>>>>>> implementation, may be you will change your opinion.
> >>>>>>>>>>>>
> >>>>>>>>>>>> And the last... "Give the floor smb" means "give smb
> permission
> >>>>>>>>>>>> to talk at the conference". It is a synonym for "give smb
> exclusive audio"
> >>>>>>>>>>>> :)
> >>>>>>>>>>>>
> >>>>>>>>>>>> German.
> >>>>>>>>>>>>
> >>>>>>>>>>>> 2011/11/22 [email protected] <[email protected]>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Hi German,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> the problem about the "exclusive audio" was not the
> >>>>>>>>>>>>> functionality as, it was a good idea to add it, But the
> implementation had
> >>>>>>>>>>>>> some issues. There where calls in the code that simply where
> referencing
> >>>>>>>>>>>>> nowhere. Also it seemed to me that you've put the button in
> the video-view
> >>>>>>>>>>>>> to avoid need to code the logic behind such a button in the
> user list :)))
> >>>>>>>>>>>>> I still plan to add this functionality again, I just had no
> time
> >>>>>>>>>>>>> yet.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> About muting other to avoid noises from bad microphones:
> >>>>>>>>>>>>> The other theory about doing such kind of noise reduction is
> the
> >>>>>>>>>>>>> way other video-conferencing application have done it:
> Instead of "giving"
> >>>>>>>>>>>>> exclusive audio, you have a button "Push to Talk", that
> means that your
> >>>>>>>>>>>>> micro is only enabled as long as you hold the button.
> >>>>>>>>>>>>> That way also two parties or more can speak at a time without
> >>>>>>>>>>>>> any need to somebody to enable or disable the audio.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I don't understand what you mean by the term "giving floor to
> >>>>>>>>>>>>> somebody"?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Maybe we could discuss those functionality that you propose
> and
> >>>>>>>>>>>>> then implement some compromise.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Sebastian
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 2011/11/22 German Grekhov <[email protected]>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Sebastian,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I want to talk about some new functionality. First of all I
> >>>>>>>>>>>>>> want to talk about "give exclusive audio" (give the floor)
> functionality.
> >>>>>>>>>>>>>> This functionality is very popular among our russian
> consumers, and it very
> >>>>>>>>>>>>>> good to include it to the trunk version. Because many of
> people have cheap
> >>>>>>>>>>>>>> microphones and they listen to some noise during their
> conference if more
> >>>>>>>>>>>>>> than one people talk simultaneously. Another reason is
> providing a new
> >>>>>>>>>>>>>> interesting feature that gives a user more opportunities in
> his conference.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Yes, it is a special feature therefore it is some
> >>>>>>>>>>>>>> controversial, and you are not fully agree about it.
> >>>>>>>>>>>>>> So, we offer to make a new type of conference room which is
> >>>>>>>>>>>>>> called something like  "Microphone permission room" or just
> "Microphone
> >>>>>>>>>>>>>> room". Every user at this room type could use this
> functionality. But other
> >>>>>>>>>>>>>> room types would not provide it.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> And our implementation of this functionality have changed
> from
> >>>>>>>>>>>>>> the last time we communicated about it.
> >>>>>>>>>>>>>> There are next changes:
> >>>>>>>>>>>>>> 1) "Give the floor" button is not placed on the left user
> list,
> >>>>>>>>>>>>>> but it is placed on the video window. If a user move his
> mouse into some
> >>>>>>>>>>>>>> video window this button appears in the center of it. And
> it disappears
> >>>>>>>>>>>>>> after moving the mouse out of the video window. It was made
> because it
> >>>>>>>>>>>>>> provides a fast way to give the floor to somebody. Old
> implementation let a
> >>>>>>>>>>>>>> user make several clicks to give the floor, but not only
> one.
> >>>>>>>>>>>>>> 2) This button is a big button, because it is more handy for
> >>>>>>>>>>>>>> using it.
> >>>>>>>>>>>>>> 3) Every user could give the floor himself, but he can't
> give
> >>>>>>>>>>>>>> it another user. Is was made for avoiding some chaos at the
> conference.
> >>>>>>>>>>>>>> 4) A moderator of the conference could give the floor every
> >>>>>>>>>>>>>> user.
> >>>>>>>>>>>>>> 5) A hot-key was added. If you press F12 you will give the
> >>>>>>>>>>>>>> floor yourself.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I can send you the patch with it and you will check these
> >>>>>>>>>>>>>> thing. Maybe you will have any comments.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Thank you. Best regards,
> >>>>>>>>>>>>>> German Grekhov.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Sebastian Wagner
> >>>>>>>>>>>>> http://www.openmeetings.de
> >>>>>>>>>>>>> http://www.webbase-design.de
> >>>>>>>>>>>>> http://www.wagner-sebastian.com
> >>>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Sebastian Wagner
> >>>>>>>>>>> http://www.openmeetings.de
> >>>>>>>>>>> http://www.webbase-design.de
> >>>>>>>>>>> http://www.wagner-sebastian.com
> >>>>>>>>>>> [email protected]
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Sebastian Wagner
> >>>>>>>>> http://www.openmeetings.de
> >>>>>>>>> http://www.webbase-design.de
> >>>>>>>>> http://www.wagner-sebastian.com
> >>>>>>>>> [email protected]
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Sebastian Wagner
> >>>>>>>> http://www.openmeetings.de
> >>>>>>>> http://www.webbase-design.de
> >>>>>>>> http://www.wagner-sebastian.com
> >>>>>>>> [email protected]
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Sebastian Wagner
> >>>>>>> http://www.openmeetings.de
> >>>>>>> http://www.webbase-design.de
> >>>>>>> http://www.wagner-sebastian.com
> >>>>>>> [email protected]
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Sebastian Wagner
> >>>>>> http://www.openmeetings.de
> >>>>>> http://www.webbase-design.de
> >>>>>> http://www.wagner-sebastian.com
> >>>>>> [email protected]
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Sebastian Wagner
> >>>>> http://www.openmeetings.de
> >>>>> http://www.webbase-design.de
> >>>>> http://www.wagner-sebastian.com
> >>>>> [email protected]
> >>>>
> >>>>
> >>>> --
> >>>> You received this message because you are subscribed to the Google
> Groups
> >>>> "OpenMeetings developers" group.
> >>>> To post to this group, send email to
> [email protected].
> >>>> To unsubscribe from this group, send email to
> >>>> [email protected].
> >>>> For more options, visit this group at
> >>>> http://groups.google.com/group/openmeetings-dev?hl=en.
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> WBR
> >>> Maxim aka solomax
> >>
> >>
> >>
> >>
> >> --
> >> Sebastian Wagner
> >> http://www.openmeetings.de
> >> http://www.webbase-design.de
> >> http://www.wagner-sebastian.com
> >> [email protected]
> >>
> >> --
> >> You received this message because you are subscribed to the Google
> Groups
> >> "OpenMeetings developers" group.
> >> To post to this group, send email to [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected].
> >> For more options, visit this group at
> >> http://groups.google.com/group/openmeetings-dev?hl=en.
>

Reply via email to