Messaging and Presence Protocol XMPP .... Communication Promitives .... Qu n lí danh sách roster .... Tr ng thái trò chuy n Chat States ..... Chat nhóm Multi-User Chat .... Phân quy n tr
Trang 1KHOA CÔNG NGH THÔNG TIN
KHÓA LU N T T NGHI P
NGÀNH TIN H C
XÂY D NG NG D NG INSTANT MESSAGE THEO GIAO TH C XMPP
SVTH: Tr n Trung Thành MSSV: 10761278
Ngành: Tin H c GVHD: Th y Hu nh Minh Quang
Thành ph H Chí Minh – N m 2011
Trang 2L I C M N
Trong su t quá trình h c t i tr ng i h c M Tp H Chí Minh, em đã đ c
các th y cô h ng d n và truy n đ t nh ng ki n th c chuyên môn c n thi t
Ngoài ra, em còn đ c làm vi c nghiêm túc, tích c c trên tinh th n đ c l p sáng
t o ây là nh ng kinh nghi m quý báu tr c khi b t tay vào làm vi c trong
Em xin chân thành c m n th y Hu nh Minh Quang đã t n tình giúp đ ,
h ng d n em trong su t th i gian th c hi n khóa lu n, chúc th y s c kh e và
đ t đ c nhi u thành công trong s nghi p gi ng d y và nghiên c u khoa h c
Tr n Trung Thành
Trang 3NH N XÉT C A GI NG VIÊN H NG D N
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4NH N XÉT C A GIÁO VIÊN PH N BI N
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5DANH M C CÁC T VI T T T
T vi t t t T nguyên g c
XMPP Extensible Messaging and Presence Protocol
JID JabberID
JQDN Full Qualified Domain Name
SASL Simple Authentication and Security Layer
XHTML-IM Extensible Hypertext Markup Language Instant Messaging XEP XMPP Extension Protocol
RTP Real-Time Transport Protocol
Trang 6M C L C
CH NG 1: T NG QUAN 1
1.1 T ng quan v đ tài 2
1.2 Các v n đ đã th c hi n trong đ tài 2
1.3 B c c c a khóa lu n 3
CH NG 2: C S LÝ THUY T XMPP 4
2.1 Messaging and Presence Protocol (XMPP) 5
2.1.1 Gi i thi u 5
2.1.2 Ki n trúc 7
2.1.3 a ch (Address) 8
2.1.4 Streaming XML 9
2.1.5 Communication Promitives 10
2.2 K t n i và b o m t 14
2.2.1 T o k t n i gi a client – server 14
2.2.2 Các ph ng th c ch ng th c 17
2.2.3 Mã hóa k t n i 18
2.3 S hi n di n (Presence) 19
2.3.1 ng ký s hi n di n 19
2.3.2 Thông báo s hi n di n 21
2.3.3 Thông tin tr ng thái 22
2.3.4 u tiên 23
2.3.5 Thông báo s hi n di n tr c ti p 23
2.3.6 Offline 24
2.3.7 Qu n lí danh sách (roster) 24
2.4 Instant Messaging 25
2.4.1 Tr ng thái trò chuy n (Chat States) 26
2.4.2 VCard 27
2.4.3 nh d ng tin nh n 28
2.5 Khám phá d ch v (Service Discovery) 28
2.6 Data Forms 30
Trang 72.7 Chat nhóm (Multi-User Chat) 32
2.7.1 C b n v Multi-User Chat 32
2.7.2 Phân quy n trong phòng 35
2.7.3 Nick name 40
2.7.4 T o phòng chat 42
2.7.5 M i b n vào phòng chat 43
2.8 Jingle và File Transfer 44
2.8.2 T o phiên đ th c hi n m t cu c g i 46
2.8.3 T o phiên g i file 50
2.8.4 In-Band Bytestreams 55
CH NG 3: PHÂN TÍCH VÀ THI T K NG D NG 57
3.1 Gi i thi u 58
3.2 S đ Use Case 58
3.3 Thi t k các l p 71
3.3.1 C s d li u 71
3.3.2 Các l p phía Server 72
3.3.3 Các l p phía Client 82
CH NG 4: HI N TH C NG D NG 88
4.1 Các ch c n ng đã hi n th c đ c 89
4.2 M t s giao di n ng d ng 89
4.3 Cài đ t và s d ng 92
4.3.1 Yêu c u h th ng 92
4.3.2 Cài đ t 92
4.3.3 S d ng 93
CH NG 5: K T LU N 95
5.1 M t s k t qu đ t đ c 96
5.2 H n ch 96
5.3 H ng phát tri n 96
TÀI LI U THAM KH O 97
Trang 8DANH M C HÌNH
Hình 2.1: Ki n trúc phân c p client – server XMPP 7
Hình 2.2: C u trúc t ng tác c a stanza IQ 12
Hình 2.3: Quá trình b t tay đ ng ký s hi n di n 20
Hình 2.4: Các tr ng thái trò chuy n trong XMPP 26
Hình 2.5: Quy trình t ng tác d li u Data Form 31
Hình 2.6: Quá ho t đ ng c a m t phiên Jingle 45
Hình 3.1: Mô hình t ng quát ng d ng 58
Hình 3.2: Mô hình thao tác sau đ ng nh p 59
Hình 3.3: L u đ k t n i 59
Hình 3.4: L u đ đ ng ký 60
Hình 3.5: L u đ ng t k t n i 61
Hình 3.6: L u đ đ ng nh p 62
Hình 3.7: L u đ đ ng xu t 63
Hình 3.8: L u đ thêm b n 64
Hình 3.9: L u đ xóa b n 65
Hình 3.10: L u đ g i tin nh n 66
Hình 3.11: L u đ t o phòng chat 67
Hình 3.12: L u đ m i b n vào phòng chat 68
Hình 3.13: L u đ g i tin nh n lên phòng chat 69
Hình 3.14: L u đ g i file 70
Hình 3.15: B ng Account 71
Hình 3.16: B ng ContactList 71
Hình 3.17: Mô hình c s d li u 72
Hình 3.18: S đ các l p phía Server 72
Hình 3.19: L p Parser 73
Hình 3.20: L p JID 74
Trang 9Hình 3.21: L p CADO 74
Hình 3.22: L p Tag 75
Hình 3.23: L p ClientGroup 76
Hình 3.24: L p Roster 76
Hình 3.25: L p CServerApp 76
Hình 3.26: L p Base64 77
Hình 3.27: L p Util 77
Hình 3.28: L p ConnectionClient 77
Hình 3.29: L p ConnectionServer 78
Hình 3.30: L p ConnectionBase 78
Hình 3.31: Giao di n TagHandler 79
Hình 3.32: Giao di n ConnectionDataHandler 79
Hình 3.33: L p ClientHandler 80
Hình 3.34: Giao di n ConnectionHandler 80
Hình 3.35: Giao di n ServerHandler 81
Hình 3.36: L p CServerDlg 82
Hình 3.37: S đ các l p phía Client 83
Hình 3.38: Giao di n NotifyHandler 83
Hình 3.39: L p ClientProcess 84
Hình 3.40: L p CChatDlg 85
Hình 3.41: L p CLoginDlg 85
Hình 3.42: L p CRegisterDlg 86
Hình 3.43: L p CClientApp 86
Hình 3.44: L p CAddContactDlg 86
Hình 4.1: Giao di n Server 89
Hình 4.2: Giao di n chính Client 90
Hình 4.3: C a s đ ng ký tài kho n 90
Trang 10Hình 4.4: C a s đ ng nh p 91
Hình 4.5: C a s thêm b n 91
Hình 4.6: C a s khi có yêu c u thêm b n 91
Hình 4.7: C a s chat 92
Trang 11CH NG 1: T NG QUAN
Trang 121.1 T ng quan v đ tài
Trong cu c s ng, nhu c u thông tin liên l c là h t s c c n thi t c bi t, trong môi tr ng mà công ngh thông tin phát tri n m t cách nhanh chóng nh hi n này thì các công ngh m i liên t c xu t hi n nh m ph c v nhu c u thông tin liên
l c cho con ng i Và c ng theo m t xu h ng t t y u khi càng có nhi u công ngh thì đòi h i c a ng i s d ng càng cao, yêu c u vi c thông tin liên l c ph i
d dàng, nhanh chóng, hi u qu và ti n l i
Instant Messaging (IM) ra đ i c ng t nh ng nhu c u th c t đó IM là m t hình th c giao ti p th i gian th c gi a các máy tính trên m ng ho c các thi t b
di đ ng có n i m ng Ng i s d ng có th trao đ i các tin nh n t ng t nh email ho c tham gia vào các cu c h i tho i nhóm, tuy nhiên IM khác email ch các tin nh n này đ c g i đi và nh n m t cách nhanh chóng và các thao tác g i
nh n c ng đ n gi n h n r t nhi u so v i email V c b n m c tiêu c a các ng
d ng Instant Messaging là trao đ i các tin nh n v n b n, tuy nhiên theo xu h ng phát tri n và yêu c u c a ng i s d ng ngày càng cao thì các ng d ng IM hi n nay tích h p thêm r t nhi u ch c n ng, có th k ra nh : trao đ i hình nh, âm thanh, hình nh, các t p d li u, ngoài ra m t s ng d ng còn cho phép ng i s
d ng nghe nh c tr c tuy n, ch i game, xem tin t c, …
V i vi c phát tri n m nh m c a các ng d ng Instant Messaging thì m t lo t các giao th c đ hi n th c ng IM c ng ra đ i Có th k ra nh MSNP c a Windows Live Messenger, OSCAR c a AIM, Skype c a Skype, YMSG c a Yahoo Messenger, c đi m chung c a nh ng giao th c này đ u là nh ng giao th c th ng m i, ch ph c v riêng cho ng d ng c a hãng s n xu t
Bên c nh đó nh ng giao th c m nh Extensible Messaging and Presence Protocol (XMPP) c ng ra đ i nh m t h ng phát tri n m i c a các ng d ng Instant Messaging, khi đó ng i s d ng c a các ng d ng IM khác nhau có th liên l c v i nhau d dàng, khác v i s tách bi t đ c l p c a nh ng ng d ng nh AIM, Yahoo, Windows Live Messenger, …
1.2 Các v n đ đã th c hi n trong đ tài
Trang 13s d ng giao th c XMPP cùng v i Windows Socket API hi n th c m t
ng d ng Instant Messaging, đ tài c n gi i quy t nh ng v n đ sau:
ô Tìm hi u chi ti t giao th c XMPP
ô D a trên th vi n Windows Socket API và giao th c XMPP xây d ng các
l p h tr vi c k t n i gi a client và server, mô t c u trúc XML, phân tích
Trang 14CH NG 2: C S LÝ THUY T XMPP
Trang 152.1 Messaging and Presence Protocol (XMPP)
2.1.1 Gi i thi u
Extensible Messaging and Presence Protocol (XMPP) là m t giao th c m ,
tr c kia có tên là Jabber XMPP d a trên n n t ng là c u trúc XML (Extensible Markup Language), nói c th h n XMPP là con đ ng v n chuy n các gói tin XML gi a các th c th trên m ng
Không gi ng nh h u h t các giao th c Instant Messaging khác, XMPP là
m t giao th c m , chính vì đi u này đã làm cho XMPP đ c s d ng khá r ng rãi, b t c cá nhân nào đ u có th ti n hành tri n khai m t d ch v XMPP c a riêng mình và hoàn toàn có th t ng thích v i m t s d ch v c a m t cá nhân khác Và thông th ng nh ng ng d ng này đ u đ c cung c p d i
d ng mã ngu n m ho c mi n phí, đi u này s là ti n đ đ thu hút s m t
l ng l n ng i s d ng so v i các ng d ng Insant Messaging khác trong
Å Xác th c (Authentication): đ nh ngh a trong RFC-3920, cung c p kh
n ng xác th c m t th c th khi l n đ u tiên k t n i đ n server
Å Hi n di n (Presence): đ nh ngh a trong RFC-3921, cung c p kh n ng thông báo m t th c th có t n t i trên m ng hay ko, đ ng th i có th kèm theo m t s thông tin v th c th đó
Å Danh sách liên l c (Contacts lists): đ nh ngh a trong RFC-3921, cung c p
kh n ng l u tr danh sách liên l c c a m t th c th trên server
Trang 16Å One-to-one messaging: đ c đ nh ngh a trong RFC-3920, cho phép 2
th c th g i tin nh n qua l i v i nhau
Å Multi-party messaging: đ nh ngh a trong XEP-0045, cung c p ch c n ng cho m t th c th tham gia vào m t nhóm và trao đ i tin nh n qua l i gi a các th c th khác trong nhóm đó
Å Thông báo (Notifications): đ c đ nh ngh a trong XEP-0060, cung c p
ch c n ng t ng t v i “multi-party messaging”, tuy nhiên đã đ c t i u hóa theo chi u t m t đ n nhi u th c th v i m t ch đ c th
Å Service discovery: đ nh ngh a trong XEP-0030, cung c p kh n ng xác
Å Workflow management: đ nh ngh a trong XEP-0050, th ng đ c s
d ng k t h p v i data forms đ qu n lý các quy trình công vi c
Å Peer-to-peer media sessions: đ nh ngh a trong XEP-0166, cung c p kh
n ng t o và qu n lý các phiên trong vi c trao đ i các d li u đa ph ng ti n
nh âm thanh, hình nh, t p d li u
V i s l ng d ch v đa d ng trên, XMPP cung c p kh n ng xây d ng các
ng d ng khá phong phú, sau đây là m t s ng d ng tiêu bi u:
Trang 17Å Middleware and cloud computing
Å Data syndication
Å Voice over IP
Å Identity services
2.1.2 Ki n trúc
XMPP s d ng ki n trúc phân c p client – server Ngh a là các client không
k t n i và trao đ i thông tin tr c ti p v i nhau mà ph i thông qua server
Hình 2.1: Ki n trúc phân c p client – server XMPP
Ngu n: Oreilly (2009), XMPP The Definitive Guide, Trang 12
i m hay c a vi c s d ng ki n trúc phân c p client – server là có th phân chia m t cách rõ ràng các m i quan tâm trong vi c xây d ng ng d ng i
v i vi c phát tri n client thì t p trung vào giao di n, m c đ ti n l i cho ng i
s d ng, trong khi đó đ i v i phát tri n server thì t p trung vào đ b o m t, tin
Trang 18c y và kh n ng m r ng c a ng d ng Nó đ n gi n h n r t nhi u trong vi c
t ch qu n lý các ng d ng s d ng công ngh ngang hàng Và do đó c ng
đ ng XMPP s xây d ng client đ n gi n nh t có th , trong khi đó s ph c t p
s đ c đ y m nh khi phát tri n các server
Ki n trúc c a XMPP có khá nhi u đi m t ng đ ng v i ki n trúc World Wide Web và Email tuy nhiên c ng có m t s đi m khác bi t:
XMPP gi ng Email trong kh n ng k t n i liên tên mi n, còn World Wide Web thì không h tr
Trong khi Email h tr “multiple hop” ngh a là kh n ng k t n i gi a nhi u server v i nhau, thì XMPP ch h tr k t n i “single hop” là ch k t n i gi a 2 server v i nhau, còn World Wide Web thì không h tr ch c n ng này
2.1.3 a ch (Address)
M i th c th XMPP trên m ng đ c xác đ nh b i m t đ a ch g i là JabberID (JID) C b n XMPP d a trên h thông tên mi n DNS đ xây d ng
c u trúc c a m t đ a ch thay vì s d ng đ a ch IP JID khá gi ng v i m t đ a
Trang 19tài nguyên này s đ c thêm vào cu i giá tr JID c a tài kho n đó ví d user01@test.xmpp/home Giá tr tài nguyên này có th là tên đ a đi m, tên máy, tên ph n m m mà tài kho n dùng đ đ ng nh p Giá tr có d ng
user@domain.tld/resource th ng đ c g i là “full JID”
2.1.4 Streaming XML
V b n ch t, XMPP là m t công ngh cho phép x lý các lu ng XML
Tr c tiên m t XMPP client ph i thi t l p m t k t n i TCP đ n XMPP server Sau đó client s thi t l p m t lu ng XML đ n server, và server c ng thi t l p
m t lu ng t ng t theo chi u ng c l i Khi qua trình thi t l p lu ng k t thúc,
gi a client và server s trao đ i các th XML c b n có 3 lo i: <message/>,
<presence/>, <iq/>, đ c g i là “stanzas”
<item jid=“user02@ test.xmpp”/>
<item jid=“user03@ test.xmpp”/>
Trang 20V c b n các stanza trong XMPP là m t đ n v truy n thông tin, t ng t
nh m t gói tin hay b n tin các giao th c khác, m i stanza đ u có m t ý ngh a và tác d ng riêng, s đ c trình bày sau đây
º Stanza Message
Stanza message có ch c n ng truy n thông tin t th c th này đ n th c th khác trên m ng Thông th ng, các stanza message khi đ c g i đi s không
nh n đ c thông tin xác nh n là đã g i, đi u này giúp gi m b t th i gian x lý
đ ng th i c ng gi m b t m t l ng b ng thông đáng k trên m ng dành cho
vi c xác nh n Stanza message đ c phân thành 5 lo i, tùy vào giá tr c a
thu c tính type:
Å normal: t ng t nh m t email vì nó có th đ c tr l i ho c không
Å chat: th hi n vi c trao đ i tin nh n theo phiên trong th i gian th c gi a
2 th c th
Å groupchat: trao đ i tin nh n gi a m t nhóm th c th
Å headline: dùng đ g i m t thông báo
Å error: n u có l i trong quá trình g i tin nh n tr c thì m t b n tin error
s đ c g i v
Ngoài các thu c tính type trong m t stanza message còn các thu c tính nh
to, from dùng đ xác đ nh đ a ch ng i g i và nh n và có giá tr là m t
JabberID, hay body, subject th hi n n i dung b n tin, hay tiêu đ b n tin
Trang 21Nh n bi t s hi n di n c a nhau trên m ng là m t trong nh ng đ c tính n i
b t c a các h th ng giao ti p th i gian th c nh Instant Messaging c tính này có ch c n ng thông báo đ n các th c th khác v s hi n di n (online) c a
m t th c th nào đó, và ch khi m t th c th online thì m i có th ti p nh n các thông đi p và giao ti p v i các th c th khác Và t t nhiên đ đ m b o tính riêng t thì không hoàn toàn lúc nào m t th c th c ng mu n nh n bi t s hi n
di n c a th c th khác ho c ng c l i, thông th ng đ gi i quy t v n đ này các h th ng th ng cho phép các th c th đ ng ký s hi n di n v i nhau XMPP, stanza presence đ m nhi m ch c n ng nói trên V c b n s hi n
di n ch c n xác nh n m t th c th có trên m ng hay không, tuy nhiên XMPP, ch c n ng này đ c m r ng thêm nh cho phép tùy ch nh tr ng thái
b n tin tr l i khi m t stanza IQ đ c g i đi Stanza IQ có 4 lo i đ c xác
Trang 22đ nh theo giá tr c a thu c tính type:
Å get: yêu c u thông tin t m t th c th t ng t HTTP GET
Å set: cung c p thông tin hay là t o m t yêu c u m i t ng t HTTP
POST, PUSH
Å result: tr v k t qu c a m t IQ-get, ho c là xác nh n m t IQ-set
Å error: thông báo l i cho m t IQ-set ho c get
Trang 23to=“user01@ test.xmpp /school”
type=“result”>
<query xmlns=“jabber:iq:roster”>
<item jid=“user02@ test.xmpp”/>
<item jid=“user03@ test.xmpp”/>
<item jid=“user03@ test.xmpp”/>
có b n tin báo l i thì có ngh a là đã g i thành công t o ra m t b n tin l i
XMPP cung c p thành ph n <error/> đ c thêm vào stanza message hay presence xác đ nh chính xác l i x y ra XMPP cung c p giá tr thu c tính
type cho thành ph n <error/> cùng v i các thành ph n con bên trong
xmlns=“urn:ietf:params:xml:ns:xmpp-</error>
</message>
Giá tr c a type trong <error/> ngoài cancel ra có th là auth, continue,
modify ho c wait Tuy nhiên ý ngh a chính các l i đây th hi n b i các ph n
t con bên trong <error/>, ví d trên là <service-unvailable/> nh ng c ng
có th là <item-not-found/>, <forbidden/>, <bad-request/>, <conflict/>,
<gone/>, … Danh sách l i này đ c th hi n đ y đ trong RFC-3920
Trang 24Tr c tiên client ph i xác đ nh đ a ch IP và port c a server b ng các d ch
v DNS và thi t l p k t n i TCP đ n server v i đ a ch IP và port đã xác đ nh
Trang 25nên giá tr xmlns là jabber:client, và http://etherx.jabber.org/streams là giá
<mechanism>DIGES-MD5</mechanism>
<required/>
<mechanisms/>
<compression xmlns=”http://jabber.org/features/compress”> <method>zlib</method>
Trang 26Å Mechanisms: ch c n ng ch ng th c
Å Compression: t i u hóa lu ng ti t ki m b ng thông
i v i các tính n ng kèm theo thành ph n <optional/> ho c không ch a
b t c thành ph n nào có ngh a là tính n ng này server không b t bu c client
ph i h tr , ng c l i n u là thành ph n <required/> thì client b t bu c ph i
h tr thì m i k t n i đ c t i server Chi ti t các tính n ng này s đ c đ
c p chi ti t trong các ph n sau
º Client xác th c v i server
N u client h tr đ y đ các ch c n ng mà server yêu c u, client s ti n hành xác th c v i server, ng c l i client s ng t k t n i v i server N u client
ch n ph ng th c xác th c là PLAIN, client s g i m t chu i có đ nh d ng
<0>username<0>password (<0> là 0 byte) và đã đ c mã hóa theo chu n Base64, giá tr c th đây s là <0>user01<0>123:
º Xác đ nh giá tr tài nguyên
Sau khi xác th c client, server s ti p t c g i m t s yêu c u khác v tính
n ng đ n client trong m t dòng XML m i v i id m i, c th đây là tính n ng
bind xác đ nh giá tr tài nguyên c a client
<?xml version=”1.0”?>
<stream:stream from=”test.xmpp”
Trang 27Sau khi nh n đ c yêu c u trên, client s g i l i server giá tr tài nguyên,
gi s giá tr đây là “demo”:
<iq id=”id212323” type=”set”>
Trang 28gi n nh ng đ b o m t c a ph ng th c này là r t th p, c th SASL cung c p
m t s ph ng th c ch ng th c sau:
Å PLAIN: đ c đ nh ngh a trong RFC-4616, cung c p ch c n ng ch ng
th c b ng cách s d ng m t kh u, vì m t kh u đ c g i đi mà không thông qua m t ph ng pháp b o m t nào nên tính an toàn không cao
Å DIGEST-MD5: đ nh ngh a trong RFC-2831, đ b o m t cao h n so v i
PLAIN vì m t kh u s đ c mã hóa tr c khi đ c g i đi
Å SCRAM: m t ph ng th c đ c đ ngh đ thay th cho
DIGEST-MD5, ph ng th c này khá an toàn vì đ c s d ng k t h p v i Transport Layer Security
Å ANONYMOUS: đ c trình bày trong RFC-4505, cung c p kh n ng
ch c th c cho các client mu n đ ng nh p vào h th ng nh ng không có tài kho n
Trong nh ng ph ng pháp ch ng th c trên, m t vài ph ng pháp đ c s
d ng k t h p v i ch c n ng mã hóa k t n i (Encryping The Connection), ch c
n ng này s đ c th hi n ph n sau
2.2.3 Mã hóa k t n i
i v i m t k t n i TCP thông th ng, kh n ng m t các thông tin cá nhân
là r t cao, vì các thông tin bao g m c m t kh u khi ch ng th c đ u không
đ c b o v , nên kh n ng b “capture” các gói tin là hoàn toàn có th x y ra, khi đó s nh h ng r t l n đ n ng i s d ng
Transport Layer Security (TLS) đ c đ nh ngh a trong RFC-5246 là m t trong nh ng ph ng pháp t ng c ng đ an toàn cho quá trình trao đ i thông
Trang 29tin gi a client và server
ti n hành cài đ t TLS vào ng d ng, khi client yêu c u m lu ng XML, server s g i tr yêu c u thi t l p TLS:
th 3 nào khác
2.3 S hi n di n (Presence)
Nh đã đ c p trong ph n gi i thi u, s hi n di n là m t trong nh ng ch c
n ng quan tr ng trong m t ng d ng Instant Messaging Trong ph n này s th
hi n rõ h n cách cài đ t c ng nh nh ng ch c n ng mà presence cung c p
2.3.1 ng ký s hi n di n
Hai th c th trên m ng mu n nh n bi t s hi n di n c a nhau ph i ti n hành
Trang 30quá trình đ ng ký s hi n di n l n nhau, quá trình b t tay này di n ra nh trong hình 2.3
Hình 2.3: Quá trình b t tay đ ng ký s hi n di n
Ngu n: Oreilly (2009), The Definitive Guide, Trang 33
đây ví d s l y user01 s ti n hành b t tay v i user02
u tiên user01 s g i yêu c u đ n user02 b ng m t stanza presence v i
Trang 31<presence from=”user02@test.xmpp” to=”user01@test.xmpp
Khi nh n đ c yêu c u, server s ki m tra roster c a client và g i thông báo
đ n các th c th trong danh sách này:
Trang 32<presence from=”user01@test.xmpp/home” to=”user02@test.xmp” type=”probe”/>
<presence from=”user01@test.xmpp/home” to=”user03@test.xmp” type=”probe”/>
<presence from=”user01@test.xmpp/home” to=”user04@test.xmp” type=”probe”/>
…
Sau khi nh n đ c thông báo th m dò t server, các th c th này s g i l i cho user01 thông tin v s hi n di n c a mình, n u m t th c th không thông báo l i cho user01 c ng có ngh a là th c th này hi n t i không t n t i trên
2.3.3 Thông tin tr ng thái
Ngoài ch c n ng thông báo m t th c th có t n t i trên m ng hay không, XMPP còn cung c p kh n ng cho các th c th có th g i thêm m t s thông tin v tr ng thái do chính th c th đó tùy ch nh thông qua 2 thành ph n
<show/> và <status/>
<show/> có 4 giá tr :
Å chat: th c th này s n sàng cho các cu c trò chuy n
Å away: th c th này đã không s d ng máy tính trong m t kho ng th i
gian ng n
Å xa: gi ng nh away tuy nhiên th c th này đã không s d ng máy tính
m t th i gian dài
Trang 33Å dnd: th c th này đang b n và không mu n làm phi n
Thành ph n <status/> cho phép th c th th hi n tr ng thái b ng m t chu i
nh n đ c g i t i m t đ a ch bare JID (có d ng user@domain.tld) thì s đ c
g i đ n client có đ u tiên cao h n, riêng trong tr ng h p g i đ n đ a ch full JID (có d ng user@domain.tld/resource) thì tin nh n s đ c g i chính xác t i client đó u tiên này có giá tr trong kho ng -127 đ n 128
Thông th ng khi thông báo s hi n di n c a m t th c th thì client s g i
đ n t t c các th c th trong roster, tuy nhiên khi c n thi t XMPP c ng h tr
ph ng pháp đ thông báo đ n chính xác m t th c th b ng cách thêm thu c
tính to vào stanza presence:
<presence from=”user01@test.xmpp/school”>
to=”user03@test.xmpp/home”/>
Trang 34Ph ng pháp này đ c s d ng khi m t th c th mu n g i tin nh n đ n
m t đ n m t th c th khác mà không có trong danh sách, ho c trong quá trình tham gia và thoát kh i các phòng h i tho i
2.3.6 Offline
đ ng xu t kh i h th ng XMPP, client ch c n g i m t stanza presence
v i type=”unavailable”:
<presence type=”unavailable”/>
Khi m t client đ ng xu t kh i h th ng thì nhi m v c a server nh sau:
Å G i thông báo đ ng xu t đ n các th c th khác trong danh sách và m t
s th c th khi nh n đ c thông báo hi n di n tr c ti p tr c đó
Å Server s không g i các thông báo, tin nh n đ n client, n u không còn client nào khác có cùng đ a ch bare JID t n t i trên m ng (ho c có th l u
tr và thông báo đ n client vào l n đ ng nh p ti p theo)
Trong tr n h p n u client mu n đ ng nh p vào h th ng thì client ch c n
g i lên server stanza presence kh i t o:
Trang 35ây có th coi là m t ch c n ng c b n và quan tr ng nh t mà XMPP cung
c p đ h tr phát tri n các h th ng Instant Messaging, các tin nh n s đ c truy n đi m t cách nhanh chóng t m t th c th này sang th c th khác v i đ
tr ít nh t C ng gi ng nh m t cu c h i tho i trong đ i th c, m i tin nh n trong XMPP kèm theo nh ng thông tin tr ng thái đ th hi n chính xác hành đ ng c a
Trang 36m i th c th trong quá trình trò chuy n
2.4.1 Tr ng thái trò chuy n (Chat States)
XMPP cung c p m t s tr ng thái sau:
Å Staring: th c th A m i B tham gia trò chuy n nh ng B ch a tham gia
Å Active: B đ ng ý tham gia nh ng ch a so n tin nh n
Hình 2.4: Các tr ng thái trò chuy n trong XMPP
Ngu n: Oreilly (2009), The Definitive Guide, Trang 50
th hi n tr ng thái trong m t tin nh n, thành ph n chat states s đ c
thêm vào các stanza message v i thu c tính xmlns là
http://jabber.org/protocol/chatstates:
<message from=”user01@test.xmpp/home”
Trang 37XMPP cung c p ch c n ng này nh m th hi n thông tin cá nhân c a m t
th c th nh tên, đ a ch , s đi n tho i, hình nh đ i di n, … c th hi n rõ trong XEP-0054
l y thông tin vCard c a m t th c th , client s g i lên server m t IQ-get
Server s g i tr thông tin v user02:
<iq from=” user02@test.xmpp”
Trang 38ôi khi m t tin nh n thông th ng trông khá nhàm chán, và đôi lúc trong
m t câu c ng c n có nh ng đi m nh n, trong tr ng h p này XMPP s cung
c p kh n ng đ nh d ng các b n tin khi đ c g i đi, d a vào chu n HTML và
đ c đ nh ngh a l i là XHTML-IM c th trong XEP-0071
Trang 39nhi u
c đ nh ngh a trong XEP-0030, service discovery cung c p 2 ph ng th c
c b n đó là disco#items và disco#info disco#items giúp xác đ nh m t th c th trên m ng, trong khi đó disco#info s xác đ nh các tính n ng mà th c th đó h
ví d này user01 yêu c u đ c cung c p m t s thông tin v server mà c
th đây là các thành ph n c a test.xmpp Sau khi nh n đ c yêu c u server s
K t qu cho th y test.xmpp có h tr conference.test.xmpp là kh n ng t
ch c các cu c h i tho i nhóm User01 c n bi t chi ti t h n các tính n ng h tr
b i conference.test.xmpp, khi đó m t IQ-get v i thành ph n disco#info s đ c
g i lên conference.test.xmpp:
<iq from=” user01@test.xmpp/home”
id=”idafsssw”
Trang 40conference.test.xmpp cung c p: http://jabber.org/protocol/muc (XEP-0045)
d ch v chat nhóm s đ c đ c p trong các ph n sau, jabber:iq:register
(XEP-0077) đ ng ký tài kho n “in-band”, vcard-temp (XEP-0054) thông tin
tài kho n
2.6 Data Forms
XMPP h tr k thu t này nh m cung c p d li u có c u trúc, đáp ng nhu
c u trao đ i nh ng thông tin ph c t p gi a các th c th
Data Froms đ c đ nh ngh a trong XEP-0004
C u trúc này đ c th hi n trong thành ph n <x/> v i không gian tên
jabber:x:data và v i thu c tính type th hi n các lo i form khác nhau, ý ngh a
m i lo i đ c th hi n rõ qua hình 2.5, bao g m: