stanzaio getDiscoInfo не удалось с таймаутом

Я пытаюсь подключиться к Jabber-серверу Jitsi, используя stanza.io. Но это кажется более сложным, чем я думаю.
Чтение документации Reference.md не помогает мне понять проблему.
Поэтому я извлекаю минимальный пример с getDiscoInfo, который увеличивает время ожидания.

Использование следующего кода в фрагменте stackru не удалось, но по другой причине (доступ к window.localstorage завершился неудачно).

<html>
<head>
<script src="https://rawgit.com/legastero/stanza.io-demo/gh-pages/stanzaio.bundle.js"></script>
<script>
function write(text) {
    var textNode = document.createElement("li");
    textNode.textContent = text;
    document.body.appendChild(textNode);
}
var serverName = "meet.jit.si";
var userName = "user";  
var roomName = "testroom";
var muc = "conference." + serverName;
var roomUrl = roomName + "@" + muc;

var client = XMPP.createClient({
  jid: roomName + "@" + serverName,
  boshURL: location.protocol+ "//" + serverName + "/http-bind",
  transports: ['bosh']
});

client.connect();                   
client.getDiscoInfo(roomUrl,'', (err, data) => {
    write("err:"+ JSON.stringify(err) + " data:"  + JSON.stringify(data))
});
</script>
</head>
</html>

Однако это может быть запущено из этого JSFiddle.

Сбой с ошибкой:

err: {"id": "5d30db9b-b2f1-4915-b387-424cb6e1673a", "type": "error", "error": {"condition": "timeout"}} данные: не определены

Я пробовал с getTime и некоторыми другими методами.
Но некоторые звонки работают как

client.joinRoom(roomUrl, userName, {status:"available"});

Так как поведение с использованием локального экземпляра jitsi и общедоступного сервера meet.jit.si одинаково, я полагаю, что проблема не в моей установке.

Знаете ли вы, почему почти все запросы к XMPP-серверу не выполняются?

1 ответ

Решение

Метод getDiscoItems необходимо вызывать после инициализации сеанса.

Я смог получить ответ, изменив код следующим образом:

client.on('session:started', () => {
    client.getDiscoItems(muc,'', (err, data) => {
        write("err:"+ JSON.stringify(err) + " data:"  + JSON.stringify(data))
    });
} )

JSFillde

Это дает ожидаемый результат:

err: null data: {"discoItems": {}, "lang": "en", "id": "cc3c40c8-0528-42d0-879c-fb67cf400b92", "to": "ad2506f3-03ef-4c7c-b472- bc757070e570@meet.jit.si/2c52a03b-8eb1-4329-8dbe-de68a2c4f682", "с":"conference.meet.jit.si","тип": "результат"}

Другие вопросы по тегам