Phân quy n trong phòng

Một phần của tài liệu 0796XÂY DỰNG ỨNG DỤNG INSTANT MESSAGE THEO GIAO THỨC XMPP (Trang 45 - 50)

2.7. Chat nhóm (Multi-User Chat)

2.7.2. Phân quy n trong phòng

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 role và affiliation 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 participant và visitor 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, ngồ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, ngồi ra cịn có kh n ng qu n lý các admin, thi t l p tồ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”

<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 hồn tồ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”

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 0796XÂY DỰNG ỨNG DỤNG INSTANT MESSAGE THEO GIAO THỨC XMPP (Trang 45 - 50)

Tải bản đầy đủ (PDF)

(107 trang)