tropo / PhonoSDK

Phono.com - The jQuery Phone API
http://phono.com
Other
131 stars 63 forks source link

IE9 and IE10 support #37

Open undsoft opened 11 years ago

undsoft commented 11 years ago

Hi,

Kitchen sink demo doesn't work in my IE10, if I choose IE9 or IE10 mode, Nor it works in quircks. IE8 works thought.

Here's the console error I get:

13:59:07.774 DEBUG - [STROPHE] error: function (stanza) {
        // remove timeout handler if there is one
            if (timeoutHandler) {
                that.deleteTimedHandler(timeoutHandler);
            }

            var iqtype = stanza.getAttribute('type');
        if (iqtype === 'result') {
        if (callback) {
                    callback(stanza);
                }
        } else if (iqtype === 'error') {
        if (errback) {
                    errback(stanza);
                }
        } else {
                throw {
                    name: "StropheError",
                    message: "Got bad IQ type of " + iqtype
                };
            }
    } 
nstratford commented 11 years ago

Hi, can you let me know which Phono version gives you this error?

undsoft commented 11 years ago

The latest one: http://s.phono.com/releases/0.6/samples/kitchen-sink/www/index.html

0.5 seems to work fine. At least it loads fine.

nstratford commented 11 years ago

Would it be possible for you to try the current master on GitHub to see if we have already resolved the issue or if it still happens?

undsoft commented 11 years ago

Yeah, ok. I will do this later.

undsoft commented 11 years ago

Ok, I've tried a nightly build. IE 10 works, thought there are some errors in console. IE 9 Standarts doesn't work, but gives a different error:

 Phono Logger Initialized 
 audioType = auto 
 dialString = sip:3366@login.zipdx.com 
 charString = en2fr@bot.talk.google.com 
 18:22:47.742 DEBUG - ConnectionUrl: http://app.phono.com/http-bind 
 18:22:47.742 DEBUG - adding loadbalancer 
 18:22:47.743 DEBUG - OrigT =app.phono.com path =http-bind 
SCRIPT5: Access is denied.

jquery.phono.js, line 746 character 9

This happens not only my local machine, but on staging server too: http://bizzocall2dev.aws.af.cm/endpoint/static/id/36 (hit the connect via internet)

nstratford commented 11 years ago

Many thanks - can you let me know if you are using https to serve the host page?

undsoft commented 11 years ago

Not on staging, but production does use https.

http://bizzocall2dev.aws.af.cm/endpoint/static/id/36 (hit the connect via internet)

undsoft commented 11 years ago

By the way, despite the fact that kitchen sink on version 0.5 initializes in IE9 and IE 10, when I try to make an actual call I get the same error that's been there since version 0.3:

 18:44:01.827 DEBUG - [STROPHE] error: 
function() {
    [native code]
}
``
nstratford commented 11 years ago

I believe that this may be IE throwing the "SCRIPT5: Access is denied" error if the whole page and connection back to Phono isn't using SSL.

Do you have a way to test SSL with a valid certificate on your staging network?

(Thanks for helping to debug this.)

undsoft commented 11 years ago

Here you go: https://bizzocall2dev.aws.af.cm/sdk/samples/kitchen-sink/www/index.html

Same 'Access denied' error.

nstratford commented 11 years ago

I've made some changes to the master branch. Please can you retest the current master and let me know if that helps?

undsoft commented 11 years ago

Well, the good news is that kitchen sink demo works in IE8, IE9 and IE10. The bad news is that it doesn't work in my application in any IE. I don't get any sound from phono and the call seem to end on its own.

Here's the log from IE10: http://pastebin.com/download.php?i=miCafLNM

You can test here: https://disrupt.ap01.aws.af.cm/endpoint/static/id/36 There should be an echo test when 'Connect via internet' button is pressed.

I load phono code via ajax. Could this be the issue?

kidlab commented 10 years ago

Yes, got this too! Maybe Strophe bug?

kidlab commented 10 years ago

I think I figured out the problem on IE9. It because the phono.audio.swf does not load in IE9! And the root cause of [STROPHE] error is Error #1009, a common error indicates that the embedded flash was not loaded.

nstratford commented 10 years ago

Do you still get this error when using the master branch from github?

kidlab commented 10 years ago

I just check the master branch, there's still some errors in IE. I have to monkey patch the loggyFunction to make it work in IE:

Phono.util = {
//...
loggyFunction: function(objName, obj, funcName) {
        var original = obj[funcName];
        obj[funcName] = function() {
            // Convert arguments to a real array
            var sep = "";
            var args = "";
            for (var i = 0; i < arguments.length; i++) {
                try {
                    args+= (sep + arguments[i]);
                } catch(e) {
                    // To fix bug in IE when concatinating an object to a string.
                    args+= (sep + typeof(arguments[i]));
                }

                sep = ",";
            }

            Phono.log.debug("[INVOKE] " + objName + "." + funcName + "(" + args  + ")");
            return original.apply(obj, arguments);
        }
    }

After that it works fine in IE8 and IE10, but not in IE9 :D The flash is now loaded correctly, but it raises error in the FlashAudio.share() method, when calling

this.$flash.share(url, autoPlay, codec.id, codec.name, codec.rate, true, peerID, video);

the error is:

TypeError: Error #1009: Cannot access a property or method of a null object reference.

Maybe error in the native flash Audio class?

kidlab commented 10 years ago

I found the problem! It's because the microphone is null in IE9. I don't know why, but I try to fix and make it work in IE9 now. Here is my patch https://github.com/kidlab/PhonoSDK/commit/651c24d215aa8f3bc0086672aa763e9a7105fbeb

undsoft commented 10 years ago

Updating to phono.js 1.0 fixed all my issues in IE. IE7 - IE10 now works. Thanks!