Получайте подписки с помощью плагина Strophe.js Roster и Ejabberd
Я использую плагин Strophe.js Roster с Ejabberd в качестве XMPP-сервера. Когда я пользуюсь Adium или другими XMPP-клиентами, я могу добавить другие учетные записи в свой список. Когда я отправляю приглашение, другой аккаунт получает присутствие с type=='subscribe'
,
Wit Strophe.js Ростер, я никогда не получаю никакого присутствия сtype == 'subscribe'
! Я перепробовал все... Я добавил несколько обработчиков... Я "отфильтровал" а также ...
Вот мой код:
HTML включает
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js'></script>
<script src='../strophe.js'></script>
<script src="../strophe.muc.js"></script>
<script src="../strophe.register.js"></script>
<script src="../strophe.roster.js"></script>
<script src='my-code.js'></script>
мой-code.js
var jid;
$(document).ready(function () {
connection = new Strophe.Connection(BOSH_SERVICE, {'keepalive': true});
//connection.rawInput = rawInput;
//connection.rawOutput = rawOutput;
connection.addHandler(onPresence, null, 'presence', null, null, null);
connection.roster.registerRequestCallback(onRequest);
// Manage connection
try {
$('#connect').get(0).value = 'disconnect';
connection.restore(null, onRegister);
} catch(e) {
if (e.name !== "StropheSessionError") { throw(e); }
$('#connect').get(0).value = 'connect';
}
$('#connect').bind('click', function () {
var button = $('#connect').get(0);
if (button.value == 'connect') {
button.value = 'disconnect';
jid = $('#jid').get(0).value;
connection.connect(jid, $('#pass').get(0).value, onConnect, 10);
} else {
button.value = 'connect';
connection.disconnect();
}
});
});
function onPresence(stanza)
{
log("PRESENCE");
console.log(stanza);
return true;
}
function onRequest(req) {
console.log("Request");
console.log(req);
return true;
}
Я что-то пропустил?
1 ответ
Решение
Я решил свою проблему!
Мы должны отправить присутствие, когда статус соединения
Strophe.Status.CONNECTING
function onConnect(status)
{
if (status == Strophe.Status.CONNECTING) {
log('Strophe is connecting.');
} else if (status == Strophe.Status.CONNFAIL) {
log('Strophe failed to connect.');
} else if (status == Strophe.Status.DISCONNECTING) {
log('Strophe is disconnecting.');
} else if (status == Strophe.Status.DISCONNECTED) {
log('Strophe is disconnected.');
} else if (status == Strophe.Status.CONNECTED) {
log('Strophe is connected.');
// Send a presence to the server
connection.send($pres().tree());
}
}