ICEmobile
  1. ICEmobile
  2. MOBI-193

Push stops in Android after chasing audio/video play link

    Details

    • Type: Bug Bug
    • Status: Reopened
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.0 Final
    • Fix Version/s: 1.4 Beta
    • Component/s: None
    • Labels:
      None
    • Environment:
      Android/ICEmobile

      Description

      When you chase a video/audio play link in Android, Ajax push stops functioning. This can be reproduced easily with mediacast by uploading an audio or camcorder file, playing it using the 'play' link, returning to the main page and then pushing to client from another device. The push does not show up. This problem exists for the stock browser and the container.

        Activity

        Hide
        Ted Goddard added a comment -

        Adding a button to the page that prevents pushIDs from being cleared during onunload:

        ice.setupPush('vgkhrkfa');

        POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf
        Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa;
        ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa

        GET /mediacast/javax.faces.resource/43785373-60f3-4727-964d-64a3b2a64bed.jsf;jsessionid=D3D49F70A9150E26876EA5D847DBF08B
        Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa;

        GET /mediacast/javax.faces.resource/43785373-60f3-4727-964d-64a3b2a64bed.jsf;jsessionid=D3D49F70A9150E26876EA5D847DBF08B
        User-Agent: stagefright/1.2 (Linux;Android 4.2.1)

        POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf
        Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa;
        ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa
        X-Connection: close
        X-Connection-reason: duplicate

        POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf
        Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa;
        ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa
        X-Connection: close
        X-Connection-reason: duplicate

        (I was originally recording this traffic to analyze the problem; on the last test push appears to continue to function, so it may be due to the device sleeping in between, or just inconsistent testing on my part.)

        Show
        Ted Goddard added a comment - Adding a button to the page that prevents pushIDs from being cleared during onunload: ice.setupPush('vgkhrkfa'); POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa; ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa GET /mediacast/javax.faces.resource/43785373-60f3-4727-964d-64a3b2a64bed.jsf;jsessionid=D3D49F70A9150E26876EA5D847DBF08B Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa; GET /mediacast/javax.faces.resource/43785373-60f3-4727-964d-64a3b2a64bed.jsf;jsessionid=D3D49F70A9150E26876EA5D847DBF08B User-Agent: stagefright/1.2 (Linux;Android 4.2.1) POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa; ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa X-Connection: close X-Connection-reason: duplicate POST /mediacast/javax.faces.resource/listen.icepush.xml.jsf Cookie: com.icesoft.user-agent=HyperBrowser/1.0; JSESSIONID=D3D49F70A9150E26876EA5D847DBF08B; com.icesoft.user-agent=HyperBrowser/1.0; ice.push.browser=1heq42673; com.icesoft.user-agent=HyperBrowser/1.0; ice.pushids=vxa54j65%20vxa54j68%20vgkhrkfa; ice.pushid=vxa54j65&ice.pushid=vxa54j68&ice.pushid=vgkhrkfa X-Connection: close X-Connection-reason: duplicate (I was originally recording this traffic to analyze the problem; on the last test push appears to continue to function, so it may be due to the device sleeping in between, or just inconsistent testing on my part.)
        Hide
        Ted Goddard added a comment -

        Experimentation with an ICEpush feature that prevents the unload from clearing the cookies does seem to help, but unfortunately the container onPause() is invoked after the page is unloaded.

        Show
        Ted Goddard added a comment - Experimentation with an ICEpush feature that prevents the unload from clearing the cookies does seem to help, but unfortunately the container onPause() is invoked after the page is unloaded.
        Hide
        Ted Goddard added a comment -

        It is likely necessary to define a new mechanism for clearing unused pushIDs. Disabling cleanup during onUnload allows push to continue functioning after the video is played, but it also results in an accumulation of old pushIDs. However, there are other cases where unused pushIDs accumulate, so an improved cleanup mechanism should be investigated.

        Show
        Ted Goddard added a comment - It is likely necessary to define a new mechanism for clearing unused pushIDs. Disabling cleanup during onUnload allows push to continue functioning after the video is played, but it also results in an accumulation of old pushIDs. However, there are other cases where unused pushIDs accumulate, so an improved cleanup mechanism should be investigated.
        Hide
        Ted Goddard added a comment -

        Each browser window/tab has a set of pushIDs with active listeners. When a listen.icepush returns with a set of notifications, these need to be dispatched to the various browser windows via two mechanisms: local storage events and cookie polling. When a notification occurs (including a noop) each pushID in each window can have an associated timestamp so that the listening window can determine if a given pushID is still active. pushIDs with very old associated timestamps can be garbage collected.

        Show
        Ted Goddard added a comment - Each browser window/tab has a set of pushIDs with active listeners. When a listen.icepush returns with a set of notifications, these need to be dispatched to the various browser windows via two mechanisms: local storage events and cookie polling. When a notification occurs (including a noop) each pushID in each window can have an associated timestamp so that the listening window can determine if a given pushID is still active. pushIDs with very old associated timestamps can be garbage collected.
        Hide
        Ted Goddard added a comment -

        This is an important fix so should be considered for 1.3EE.

        Show
        Ted Goddard added a comment - This is an important fix so should be considered for 1.3EE.

          People

          • Assignee:
            Ted Goddard
            Reporter:
            Steve Maryka
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated: