ConnectyCube / connectycube-js-sdk-releases

Releases materials for ConnectyCube JS SDK platform https://connectycube.com
9 stars 2 forks source link

Videocall failure on EDGE #11

Closed stepic-reply closed 4 years ago

stepic-reply commented 4 years ago

Hello again, We get an error in cubeInternalUtils.js when trying to answer a videocall on EDGE. Can you give some advice?

Thank you

Attached the console logs.

Schermata 2020-03-13 alle 09 25 20
DaveLomber commented 4 years ago

Hi @stepic-reply

please specify 2 things:

stepic-reply commented 4 years ago
Kachanov-dev commented 4 years ago
  • ConnectyCube JS SDK - 2.1.6
  • Microsoft Edge - 44.18362.449.0
  • Microsoft EdgeHTML - 18.18363

You have old version Microsoft EdgeHTML (2014-2019). Can you upgrade to a new version Microsoft edge Chromium (2019+) and write, does this work for you?

stepic-reply commented 4 years ago

Yes, we can for sure and it works correctly in newer version. Our doubt about this is: if a user don't upgrade EDGE? This is not an automatic update, so: do users have to manually download new version to have the videocall feature working? Is not possibile to make it work in non Chromium EDGE?

DaveLomber commented 4 years ago

@stepic-reply as the crash log says, something is happening inside one of the call callbacks. And as it says 'Error in listener undefnied' it means you use as an anonymous function as a callback

Let's do the following:

1) Could you replace all ConnectyCube calls related callbacks from anonymous to a defined function

e.g.

instead of

ConnectyCube.videochat.onCallListener = function(session, extension) {};

just do

const onCallListenerCallback = function(session, extension) {
};

ConnectyCube.videochat.onCallListener = onCallListenerCallback

so then we will got a callback function name where it crashes

2) Once we got a callback name where it crashes, then we need to debug each line of the function callback and get an exact line where it crashes

Please do it and get back to us with the results

Thanks!

stepic-reply commented 4 years ago

New info from the test:

screen

Errore translation: "ORTC RTCIceGatherer: it's not possible to allocate the transport endpoint. hr=c004e00e"

DaveLomber commented 4 years ago

Thanks @stepic-reply this dose make a lot of sense

The thing that came to my mind is that a prev generation of EDGE did not have WebRTC API and was solely based on ORTC (custom implementation of RTC stack at Microsoft).

And as ConnectyCube is based on WebRTC, it means prev versions of EDGE will not work out of the box.

But there is a thing to try - using adapter.js which can mimic the WebRTC API on top of ORTC https://github.com/webrtc/adapter

Please try to connect it and see what happens, there is a probability it can help solve the issue

stepic-reply commented 4 years ago

We already have it. The logs posted are already taking that into account.

DaveLomber commented 4 years ago

Ok I believe we gathered some more info about a possible reason

Seems an old EDGE does not support TCP based TURN servers, as stated here https://groups.google.com/forum/#!topic/sip_js/UExxgvbzI5c (last comment) and here https://forum.flashphoner.com/threads/after-update-wcs-turn-server-problem.11410/

but the ConnectyCube SDK uses both TCP and UDP

Here is what I propose to do:

1) try to use only STUN servers w/o TURN set, like this:

const CONFIG = {
  debug: { mode: 1 },
  videochat: {
     iceServers: [
            {
                urls: 'stun:stun.l.google.com:19302'
            },
            {
                urls: 'stun:turn.connectycube.com'
            }
      ]
  }
};
ConnectyCube.init(CREDENTIALS, CONFIG);

2) try to use both STUN and TURN servers, but only TURN udp, like this:

const CONFIG = {
  debug: { mode: 1 },
  videochat: {
     iceServers: [
            {
                urls: 'stun:stun.l.google.com:19302'
            },
            {
                urls: 'stun:turn.connectycube.com'
            },
            {
                urls: 'turn:turn.connectycube.com:5349?transport=udp',
                username: 'connectycube',
                credential: '4c29501ca9207b7fb9c4b4b6b04faeb1'
            }
      ]
  }
};
ConnectyCube.init(CREDENTIALS, CONFIG);

and let us know re results

DaveLomber commented 4 years ago

@stepic-reply I'm going to close this one please raise a new issue if there are still any difficulties thank you