Как сделать так, чтобы чат был успешно оставлен? (Instance.connection.muc.leave ()) - PullRequest
0 голосов
/ 05 сентября 2018

Здесь я обнаружил, что есть возможность добавить обратный вызов в качестве 3-го аргумента для метода 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);
}

1 Ответ

0 голосов
/ 06 сентября 2018

Я думаю, что есть ошибка в самом плагине

Они используют атрибут senceid (идентификатор раздела), чтобы соответствовать ответу от сервера https://github.com/metajack/strophejs-plugins/blob/master/muc/strophe.muc.js#L146

но не все серверы используют идентификатор строфы в присутствии. На самом деле ничего не говорится об идентификаторе присутствия в XEP-0045 при выходе из присутствия, поэтому некоторые серверы могут реализовывать логику идентификатора эха, но в основном это не так (и похоже на ваш сервер XMPP)

Так что я рекомендую установить этот заголовок самостоятельно, без'senceid ':

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);
}
...