Phân quy n trong phòng

Một phần của tài liệu Xây dựng ứng dụng Instant Message theo giao thức XMPP (Trang 45)

Là n i giao ti p c a nhi u th c th trên m ng, đôi khi không th tránh kh i nh ng th c th có nh ng hành đ ng gây nh h ng t i các th c th khác, nên v n đ qu n lý, phân quy n trong m t phòng là khá quan tr ng.

XMPP cung c p m t s lo i phòng, qua đó th hi n cách th c, quy đ nh tham gia c a các th c th , m t s lo i ph bi n:

ÅMembers-Only Room: ch nh ng th c th có trong danh sách m i có th tham gia vào phòng.

ÅOpen Room: t t c m i th c th đ u có th tham gia vào phòng.

ÅPassword-Protected Room: c n m t kh u đ tham gia vào phòng.

ÅHidden Room: phòng này không th tìm th y b i d ch v Service Discovery.

ÅPublic Room: ng c l i v i Hidden Room, có th tìm ki m qua d ch v Service Discovery.

ng th i MUC cung c p m t s roleaffiliation cho các th c th nh sau:

Åoutcast: nh ng th c th nh n affiliation này không đ c phép tham gia vào phòng.

Åvisitor: th c th này có th tham gia vào phòng, nh n thông đi p t các th c th khác nh ng không đ c phép g i các tin nh n.

Åparticipant: có kh n ng nh n và g i các thông đi p.

Åmember: th c th này có th nh n, g i và tham gia vào các phòng Member-Only.

Åmoderator: th c th này có th nh n, g i thông đi p, đ ng th i có kh n ng m i các participantvisitor ra kh i phòng, có kh n ng cho phép m t s th c th khác có quy n g i thông đi p.

Åadmin: ngoài nh ng ch c n ng nh m t moderator, admin còn có kh n ng xem thông tin v JID c a các th c th khác trong phòng, ngoài ra còn có kh n ng c u hình m t s ch c n ng c a phòng.

Åowner: có ch c n ng nh m t admin, ngoài ra còn có kh n ng qu n lý các admin, thi t l p toàn b c u hình c a phòng, và có kh n ng h y phòng.

Ví d , user01 là m t admin, user02 là m t participant, trong tr ng h p nào đó user01 mu n chuy n role c a user02 t participant xu ng còn visitor, user01 s g i m t IQ nh sau:

id=”fu82jd29”

to=”myroom@conference.test.xmpp” type=”set”>

<query xmlns=”http://jabber.org/protocol/muc#admin”> <item nick=”Teo” role=”visitor”/>

</query> </iq>

<iq from=” myroom@conference.test.xmpp” id=”fu82jd29”

to=” user01@test.xmpp/home”

type=”result”>

Phòng s thông báo đ n t t c m i th c th bao g m c user02 v s thay

đ i role này b ng m t presence:

<presence from=” myroom@conference.test.xmpp/Teo” to=”user02@test.xmpp/school”

<x xmlns=”http://jabber.org/protocol/muc#user”> <item affiliation=”none” role=”visitor”/> </x>

</presence>

Ngay lúc này user02 s không đ c quy n g i tin nh n lên phòng, n u c g ng g i m t thông báo l i s đ c g i v :

<message from=” user02@test.xmpp/school”

to=”myroom@conference.test.xmpp” type=”groupchat” (adsbygoogle = window.adsbygoogle || []).push({});

<body>Alo!</body> </message>

<message from=” myroom@conference.test.xmpp”

to=” user02@test.xmpp/school”

<body>Alo!</body> <error type=”auth”>

<forbidden xmlns=”urn:ietf:param:xml:ns:xmpp-stanzas”/>

</error> </message>

Trong tr ng h p mu n m i user02 ra kh i phòng, role c a user02 s đ c chuy n thành none, hành đ ng này ch tác đ ng trên nick phòng c a user02 nên, user02 hoàn toàn có th tham gia l i phòng, do đó thông th ng

affiliation c ng s đ c thay đ i thành outcast, c m hoàn toàn user02 tham gia vào phòng vì affiliation s tác đ ng lên JID c a user02.

Yêu c u user02 ra kh i phòng:

<iq from=” user01@test.xmpp/home” id=”sfb786yh”

to=”myroom@conference.test.xmpp” type=”set”>

<query xmlns=”http://jabber.org/protocol/muc#admin”>

<item nick=”Teo” role=”none”/>

</query> </iq>

<iq from=” myroom@conference.test.xmpp”

id=” sfb786yh”

to=” user01@test.xmpp/home”

type=”result”>

Thông báo đ n các th c th :

<presence from=” myroom@conference.test.xmpp/Teo” to=”user02@test.xmpp/school”

<x xmlns=”http://jabber.org/protocol/muc#user”> <item affiliation=”none” role=”none”/>

<status code=”307”/>

</presence>

Thi t l p affiliation, không cho user02 tham gia vào phòng:

<iq from=” user01@test.xmpp/home” id=”g678juiop”

to=”myroom@conference.test.xmpp” type=”set”>

<query xmlns=”http://jabber.org/protocol/muc#admin”> <item jid=”user02@test.xmpp” affiliation=”outcast”/> </query>

</iq>

<iq from=” myroom@conference.test.xmpp”

id=” g678juiop” (adsbygoogle = window.adsbygoogle || []).push({});

to=” user01@test.xmpp/home”

type=”result”>

Thông báo đ n các th c th trong phòng:

<presence from=” myroom@conference.test.xmpp/Teo” to=”user02@test.xmpp/school”

type=”unavailable”

<x xmlns=”http://jabber.org/protocol/muc#user”>

<item jid=”user02@test.xmpp” affiliation=”outcast”/>

<status code=”301”/>

</x> </presence>

Trong các ví d trên, thành ph n <status/> v i các giá tr code khác nhau th hi n các lý do khác nhau, danh sách này th hi n đ y đ trong XEP-0045, sau đây là m t vài giá tr ph bi n:

Å307: yêu c u user ra kh i phòng.

Một phần của tài liệu Xây dựng ứng dụng Instant Message theo giao thức XMPP (Trang 45)