在这里,我发现可以将回调作为第三个参数添加到leave
方法中:https://github.com/metajack/strophejs-plugins/blob/96da306f5394b901e190a3f7365fbbb676fddb51/muc/strophe.muc.js#L117
但是它不起作用。 如何向 instance.connection.muc.leave()方法中添加回调或其他内容,以确保成功离开聊天室? 也许还有其他方法可以确保我们离开了聊天室?
function handler_cb() {
console.log('>>>>>>>>> leave was successfull');
}
function leaveChat() {
instance.connection.muc.leave(room, nick, handler_cb);
}
答案 0 :(得分:1)
我认为插件本身有错误
他们使用 presenceid (节ID)属性来匹配服务器https://github.com/metajack/strophejs-plugins/blob/master/muc/strophe.muc.js#L146的响应
,但并非所有服务器都使用节ID。实际上,XEP-0045退出状态中没有任何有关状态ID的信息,因此某些服务器可能实现了ID回显逻辑,但大多数情况下却没有(并且看上去也像XMPP服务器一样)
因此,我建议您自己设置此标头,而不要使用“ presenceid”:
function leaveChat() {
instance.connection.addHandler(leaveCallback, null, "presence", "unavailable");
instance.connection.muc.leave(room, nick);
}
function leaveCallback() {
console.log('>>>>>>>>> leave was successfull');
instance.connection.deleteHandler(leaveCallback);
}