2013-12-24 4 views
0

Я нашел плагин для поддержки списка в strophe.js.Strophe.js: Как использовать плагин strophe.roster.js

Я нашел плагин here, но документации недостаточно.

Это фрагмент функции инициализации кода:

init: function(conn) 
     { 
      ... 

      var newCallback = function(status) 
      { 
       if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED) 
       { 
        try 
        { 
         // Presence subscription 
         conn.addHandler(roster._onReceivePresence.bind(roster), null, 'presence', null, null, null); 
         conn.addHandler(roster._onReceiveIQ.bind(roster), Strophe.NS.ROSTER, 'iq', "set", null, null); 
         console.log(items); 
        } 
        catch (e) 
        { 
         Strophe.error(e); 
        } 
       } 
      }; 
      ... 
      Strophe.addNamespace('ROSTER_VER', 'urn:xmpp:features:rosterver'); 
     }, 

Моя проблема в том, что я не получу свой список, поэтому присутствие не может быть обновлен.

Запрос на реестр, который должен быть отправлен по функции init, но я не смог его найти.

Кто-нибудь использует этот плагин?

Как получить список от этого плагина, так как код сильно отличается от XMPP Professional Programming book.

Заранее спасибо :)

ответ

0

использования conn.roster.get (rostercb) ;. Не забудьте указать свое присутствие.

+0

Я попробовать использовать 'roster.get (обратный вызов)', но я не получил мое присутствие реестром :( –

+0

Ваше присутствие или люди в вашем реестре? Другие реестры, и вы должны иметь подписку = «оба», чтобы получать объявления о присутствии. –

+0

Наличие людей в моем реестре. 'roster.get()' - функция, чтобы получить список из server & push в массив 'items'? Я обнаружил, что' roster.get() 'не установлен в' init', поэтому мы должны вызывать его вручную. Проблема заключается в обработчике присутствия: 'roster._onReceivePresence' * * вызывается перед ** 'roster.get()' в 'init', поэтому присутствие' items' не будет c ollected, потому что 'items' пуст/null. –

1

Я сделал это таким образом. Но я согласен, что все плывуны - это борьба, потому что документации очень мало.

Смотрите, если это помогает любому, так как это очень старая:

/** 
* Called when connection is fully established 
*/ 
function onConnected() { 
    // SEE http://xmpp.org/rfcs/rfc6121.html#roster-login 
    // the order of setting initial presence and requesting the roster is important. 
    // Get the roster for the first time (we might need to keep a copy on session storage) 
    connection.roster.get(onGetRoster, 0); 
    // pres is an strophe helper to represent a presence status. after connecting, we tell the server we are online. 
    connection.send($pres()); 

} 

/** 
* When user just connected and gets the roster information 
*/ 
function onGetRoster(items) { 
    if (!items || items.length == 0) 
     return; 
    console.log(items); 
} 
Смежные вопросы