Authentication fail on connect, but Jitsi doesn't require authorization?

We are attempting to add support for Jitsi to a FOSS (Free Open Source Software) robot control IDE so that robots can be controlled in Jitsi calls for remote access and collaboration. This will enable remote medical treatment over the internet with a FOSS robot arm and may well save lives.

So far, after reading the (massive) xmpp spec and the (massive) documentation available for Stroph.js, (we can’t find any documentation on how to connect to Jitsi, but we’ve spent hours searching and reading through the repo) and trying what seems like hundreds of different things, this is as far as we have been able to get. When we run the code below, we get

1 CONNECTING
3 AUTHENTICATING
2 CONNFAIL
6 DISCONNECTED

var conn = new Strophe.Connection("https://meet.jit.si/http-bind")
conn.connect('massmind@meet.jit.si/cfry', //fake jid, that's ok right?
             "", //don't need password?
             function(status_code) { //status_code is a small non-neg integer
                   console.log("connected with status: " + status_code + " " + strophe_status_code_to_name(status_code))
             }) 

Any help would be deeply appreciated. We think the issue has to do with how Jitsi avoids authentication? Uses do NOT need to sign up, but somehow the meet.jit.si server is requiring us to authenticate.

The easiest to do is go on welcome page, open the source, put some breakpoints inside lib-jitsi-meet where strophe is used to see what is executed, and what is passed to strophe library.

We tried that. The file is minified
https://web-cdn.jitsi.net/meetjitsi_3902.570/libs/lib-jitsi-meet.min.js?v=3902.570
and there are 196 mentions of Strophe. When we search for “Strophe.connection” there are three mentions, one seems to establish the connection but it references a single parameter “a” instead of the 3 parameters that Strophe.connection is supposed to get in the documentation. And I can’t see where “a” comes from.

Can you show us the source code from which that minified file is produced? Searching the github repo only finds two mentions of “Strophe.connection” and neither appears to be related to the code in the minified file. The variable referenced, “_StrophConn” is not found at all.

1 Like

Trying to get the example to work. It appears to be setup for a locally hosted copy of Jitsi, but we want to connect to meet.jit.si. Would these be the correct options?

var options = {
    hosts: {
        domain: 'meet.jit.si',
        muc: 'conference.meet.jit.si' // FIXME: use XEP-0030
    },
    bosh: '//meet.jit.si/http-bind', // FIXME: use xep-0156 for that

    // The name of client node advertised in XEP-0115 'c' stanza
    clientNode: 'http://jitsi.org/jitsimeet'
}  //needs work!

Open meet.jit.si/config.js

1 Like

Argh. Sorry, I should have known that. Thank you.

Ok, I’ve been able to reproduce the basic example by loading those files, (with some changes which I’ve offered as a pull request:


) into a secure server. It would appear the https is required, and that the example only works in the browser environment. Reproducing the functionality in a node.js environment does not seem possible. No matter what we do, connection fails. Even in the electron app, it appears that the node is just instantiating the chromium browser and then handing it the files that would otherwise be handed to the browser.

Sadly, use of this system from the robot does not appear to be possible without extensive re-writing of the code, and the available documentation does not appear to make that a reasonable effort at this time. My co-worker Fry is continuing to try, but I will be moving on to a less powerful home built server solution unless you have some other suggestion.