我正在尝试使用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服务器的请求都会失败吗?
答案 0 :(得分:0)
在会话初始化后需要调用getDiscoItems方法。
我能够得到修改代码的答案:
client.on('session:started', () => {
client.getDiscoItems(muc,'', (err, data) => {
write("err:"+ JSON.stringify(err) + " data:" + JSON.stringify(data))
});
} )
它给出了预期的结果:
错误:空 数据:{ “discoItems”:{}, “郎”: “恩”, “ID”: “cc3c40c8-0528-42d0-879c-fb67cf400b92”, “要”:“ad2506f3-03ef-4c7c-b472-bc757070e570 @相遇.jit.si / 2c52a03b-8eb1-4329-8dbe-de68a2c4f682" , “从”: “conference.meet.jit.si”, “类型”: “结果”}