2015-03-26 26 views
6

Jestem nowy w XMPP. Używam smack na Androidzie do dostarczania czatu w mojej aplikacji.Jak korzystać z XEP 198 (zarządzanie strumieniem) z programu smack 4.1?

W zadatki 4.1, wsparcie dla zarządzania strumieniem dodaje więc użyłem

XMPPTCPConnection.setUseStreamManagementDefault(true); 

włączyć to i ja dostaję:

03-27 00:50:54.945: D/SMACK(16991): SENT (5): <enable xmlns='urn:xmpp:sm:3' resume='true'/> 
03-27 00:50:55.740: D/SMACK(16991): RECV (5): <enabled xmlns='urn:xmpp:sm:3' id='g2gCbQAAAAVTbWFja2gDYgAABZNiAAYRuGIAAW06' resume='true' max='300'/> 

Więc XEP 198 pracuje bez zarzutu zarówno na moim klient i serwer (ejabberd 15).

Ale moje pytanie brzmi -> czy muszę napisać własny kod do przechowywania wiadomości (które nie są potwierdzone przez serwer) do mojej bazy danych Android sqlite i ręcznie wysłać je ponownie za pomocą chat.sendMessage();, gdy połączenie zostanie ponownie połączone? Czy ta część ponownego wysłania jest wykonywana przez samego Smacka?

nie zrobił dostać żadnej dokumentacji za korzystanie XEP 198 na klapsa 4,1 inny niż XMPPTCPConnection.setUseStreamManagementDefault(true);

Czy jest dostępny od klapsa do słuchania <a/> odebranego z serwera dowolny sposób?

Widziałem kod źródłowy yaxim, ale wygląda na to, że napisali swój własny kod (wysyłając pakiety) do obsługi XEP 198, który jest teraz wykonywany w Smack 4.1.

Proszę mi pomóc, co należy zrobić po włączeniu tego wsparcia?

+0

Wiem, że brakuje dokumentacji dotyczącej zarządzania strumieniem. Ale ponieważ Smack jest open source, możesz spróbować, jeśli patrząc na źródło, odpowiesz na kilka pytań. – Flow

Odpowiedz

5
  1. Oczywiście należy zachować wiadomości oczekujące i wysłać je ponownie, gdy połączenie zostanie przywrócone.
  2. Mamy jeden sposób słuchania komunikatu ack. Sprawdź to, https://stackoverflow.com/a/37289804/4085494
+0

kiedy jestem offline, tym razem ejabbered wiadomości do przodu przez FCM są powtarzane, kiedy jestem online w ejabbered kanału, więc, co mam zrobić w moim przypadku? –