2.6 Zarządzanie subskrypcją
Subskrypcja jest prośbą o udostępnienie, a raczej zezwoleniem danej osobie, kontaktowi możliwości badania naszego stanu użytkownika. O stanach mówiliśmy w poprzednim rozdziale.
Zarządzanie subskrypcją obecności w protokole Tlenu jest identyczne jak jabberze. Został on nieco zmieniony, aby uprościć ten proces, przez co o2.pl trochę zamieszało w tej materii.
Wyróżniamy 4 rodzaje subskrypcji, które zostały przedstawione w poniższej tabeli.
rodzaj | opis |
none | brak subskrypcji, obie strony nie widzą stanu |
from | użytkownik widzi nasz stan, a my jego nie widzimy |
to | widzimy stan użytkownika, a on naszego nie widzi |
both | obie strony widzą stany |
Rodzaje subskrypcji są ściśle związane z rosterem i informacjami o zmianie stanu kontaktu.
W rozdziale 2.8 Integracja rostera z subskrypcją omówimy integracje subskrypcji z rosterem, przedstawimy procesy zachodzące w rosterze w czasie zarządzania subskrypcją.
2.6.1 Prośba o subskrypcję
Aby poprosić kogoś o subskrypcje musimy wysłać do niego odpowiedni pakiet statusu z prośbą o subskrypcje.
Pakiet ten wygląda tak:
<presence to="malcom@tlen.pl" type="subscribe"/>
Odbiorca otrzyma naszą prośbę, która powinien odpowiednio przetworzyć.
2.6.2 Przetwarzanie prośby o subskrypcję
Kiedy ktoś poprosi nas o subskrypcję nasz klient zostanie o tym poinformowany pakietem:
<presence from="malcom@tlen.pl" type="subscribe"/>
Teraz powinniśmy prośbę tą odpowiednio przetworzyć. Mamy dwie możliwości, albo zgadzamy się na subskrypcje - subscribed
, albo odmawiamy jej udzielenia - unsubscribed
.
Jeśli akceptujemy subskrypcje wysyłamy do proszącego pakiet:
<presence to="malcom@tlen.pl" type="subscribed"/>
W przypadku, gdy nie zgadzamy się, odmawiamy udzielenia subskrypcji wysyłając pakiet:
<presence to="malcom@tlen.pl" type="unsubscribed"/>
2.6.3 Anulowanie subskrypcji
W przypadku, gdy chcemy cofnąć danemu kontaktowi subskrypcję wysyłamy pakiet statusu typu unsubscribed
.
Konstrukajca pakietu:
<presence to="malcom@tlen.pl" type="unsubscribed"/>
2.6.4 Prośba o anulowanie subskrybcji
W przypadku, gdy nie chcemy otrzymywać informacji o zmianach stanu danego kontaktu to wysyłamy mu pakiet statusu typu unsubscribe
.
Pakiet ten wygląda tak:
<presence to="malcom@tlen.pl" type="unsubscribe"/>
Uwaga!
Po zmianach w protokole mającym uprościć proces subskrypcji (autoryzacji) kontaktów serwer nie reaguje na wysłanie takiego pakietu.
Klient natomiast, gdy otrzyma taki pakiet od serwera odpowiednio zareaguje, ale niestety przy następnym połączeniu, nie będzie żadnych efektów tego zabiegu.