stanzaio getDiscoInfo因超时而失败

时间:2018-01-14 16:30:28

标签: javascript xmpp jitsi stanza.io

我正在尝试使用stanza.io连接到Jitsi的Jabber服务器。 但这似乎比我想的更复杂 阅读文档Reference.md并不能帮助我理解问题 所以我用getDiscoInfo提取了一个引发超时的最小例子。

在stackoverflow代码段中使用以下代码失败,但另一个原因(访问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

失败并显示错误:

  

错误:{&#34; ID&#34;:&#34; 5d30db9b-b2f1-4915-b387-424cb6e1673a&#34;&#34;类型&#34;:&#34;错误&#34 ;, &#34;错误&#34; {&#34;条件&#34;:&#34;超时&#34;}}   数据:未定义

我尝试使用getTime和其他一些方法 但是有些电话就像

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

由于使用本地jitsi实例并使用公共服务器meet.jit.si的行为相同,我想问题不在我的安装中。

您知道为什么几乎所有对XMPP服务器的请求都会失败吗?

1 个答案:

答案 0 :(得分:0)

在会话初始化后需要调用getDiscoItems方法。

我能够得到修改代码的答案:

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

JSFillde

它给出了预期的结果:

  

错误:空   数据:{ “discoItems”:{}, “郎”: “恩”, “ID”: “cc3c40c8-0528-42d0-879c-fb67cf400b92”, “要”:“ad2506f3-03ef-4c7c-b472-bc757070e570 @相遇.jit.si / 2c52a03b-8eb1-4329-8dbe-de68a2c4f682" , “从”: “conference.meet.jit.si”, “类型”: “结果”}