如何确保聊天室成功? (instance.connection.muc.leave())

问题描述 投票:0回答:1

在这里,我发现有一个能够将回调添加为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);
}
websocket xmpp multiuserchat strophe.js
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.