节 getDiscoInfo 因超时而失败
stanzaio getDiscoInfo failed with timeout
我正在尝试使用 stanza.io 连接到 Jitsi 的 Jabber 服务器。
但这似乎比我想象的要复杂。
阅读文档 Reference.md 并不能帮助我理解问题。
因此,我使用 getDiscoInfo 提取了一个引发超时的最小示例。
在 Whosebug 代码段中使用以下代码失败但由于其他原因(访问 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"}}
data:undefined
我尝试了 getTime 和其他一些方法。
但有些电话工作得像
client.joinRoom(roomUrl, userName, {status:"available"});
由于使用本地 jitsi 实例和使用公共可用服务器的行为相同 meet.jit.si,我想问题不在我的安装中。
你知道为什么几乎所有对 XMPP 服务器的请求都失败了吗?
会话初始化后需要调用 getDiscoItems 方法。
我能够像这样修改代码得到答案:
client.on('session:started', () => {
client.getDiscoItems(muc,'', (err, data) => {
write("err:"+ JSON.stringify(err) + " data:" + JSON.stringify(data))
});
} )
它给出了预期的结果:
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","from":"conference.meet.jit.si","type":"result"}
我正在尝试使用 stanza.io 连接到 Jitsi 的 Jabber 服务器。
但这似乎比我想象的要复杂。
阅读文档 Reference.md 并不能帮助我理解问题。
因此,我使用 getDiscoInfo 提取了一个引发超时的最小示例。
在 Whosebug 代码段中使用以下代码失败但由于其他原因(访问 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"}} data:undefined
我尝试了 getTime 和其他一些方法。
但有些电话工作得像
client.joinRoom(roomUrl, userName, {status:"available"});
由于使用本地 jitsi 实例和使用公共可用服务器的行为相同 meet.jit.si,我想问题不在我的安装中。
你知道为什么几乎所有对 XMPP 服务器的请求都失败了吗?
会话初始化后需要调用 getDiscoItems 方法。
我能够像这样修改代码得到答案:
client.on('session:started', () => {
client.getDiscoItems(muc,'', (err, data) => {
write("err:"+ JSON.stringify(err) + " data:" + JSON.stringify(data))
});
} )
它给出了预期的结果:
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","from":"conference.meet.jit.si","type":"result"}