TRNG I HC M TP. H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
KHÓA LUN TT NGHIP
NGÀNH TIN HC
XÂY DNG NG DNG INSTANT
MESSAGE THEO GIAO THC XMPP
SVTH: Trn Trung Thành
MSSV: 10761278
Ngành: Tin Hc
GVHD: Thy Hunh Minh Quang
Thành ph H Chí Minh – Nm 2011
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành i
LI CM N
Trong sut quá trình hc ti trng i hc M Tp H Chí Minh, em đã đc
các thy cô hng dn và truyn đt nhng kin thc chuyên môn cn thit.
Ngoài ra, em còn đc làm vic nghiêm túc, tích cc trên tinh thn đc lp sáng
to. ây là nhng kinh nghim quý báu trc khi bt tay vào làm vic trong
tng lai.
Quá trình thc hin khóa lun tt nghip va qua là c hi đ em có th áp
dng nhng kin th
c mà trong sut 4 nm qua em đã đc hc tp, cùng vi
hng dn tn tình ca thy Hunh Minh Quang em đã hoàn thành đ tài ca
mình.
Em xin chân thành cm n thy Hunh Minh Quang đã tn tình giúp đ,
hng dn em trong sut thi gian thc hin khóa lun, chúc thy sc khe và
đt đc nhiu thành công trong s nghip ging dy và nghiên cu khoa hc.
Sinh Viên
Trn Trung Thành
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành ii
NHN XÉT CA GING VIÊN HNG DN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành iii
NHN XÉT CA GIÁO VIÊN PHN BIN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành iv
DANH MC CÁC T VIT TT
T vit tt T nguyên gc
IM Instant Messaging
XMPP Extensible Messaging and Presence Protocol
XML Extensible Markup Language
JID JabberID
JQDN Full Qualified Domain Name
TLD Top Level Domain
SASL Simple Authentication and Security Layer
TLS Transport Layer Security
HTML Hypertext Markup Language
XHTML-IM Extensible Hypertext Markup Language Instant Messaging
XEP XMPP Extension Protocol
MUC Multi-User Chat
RTP Real-Time Transport Protocol
UDP User Datagram Protocol
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành v
MC LC
CHNG 1: TNG QUAN 1
1.1. Tng quan v đ tài 2
1.2. Các vn đ đã thc hin trong đ tài 2
1.3. B cc ca khóa lun 3
CHNG 2: C S LÝ THUYT XMPP 4
2.1. Messaging and Presence Protocol (XMPP) 5
2.1.1. Gii thiu 5
2.1.2. Kin trúc 7
2.1.3. a ch (Address) 8
2.1.4. Streaming XML 9
2.1.5. Communication Promitives 10
2.2. Kt ni và bo mt 14
2.2.1. To kt ni gia client – server 14
2.2.2. Các phng thc chng thc 17
2.2.3. Mã hóa kt ni 18
2.3. S hin din (Presence) 19
2.3.1. ng ký s hin din 19
2.3.2. Thông báo s hin din 21
2.3.3. Thông tin trng thái 22
2.3.4. u tiên 23
2.3.5. Thông báo s hin din trc tip 23
2.3.6. Offline 24
2.3.7. Qun lí danh sách (roster) 24
2.4. Instant Messaging 25
2.4.1. Trng thái trò chuyn (Chat States) 26
2.4.2. VCard 27
2.4.3. nh dng tin nhn 28
2.5. Khám phá dch v (Service Discovery) 28
2.6. Data Forms 30
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành vi
2.7. Chat nhóm (Multi-User Chat) 32
2.7.1. C bn v Multi-User Chat 32
2.7.2. Phân quyn trong phòng 35
2.7.3. Nick name 40
2.7.4. To phòng chat 42
2.7.5. Mi bn vào phòng chat 43
2.8. Jingle và File Transfer 44
2.8.2. To phiên đ thc hin mt cuc gi 46
2.8.3. To phiên gi file 50
2.8.4. In-Band Bytestreams 55
CHNG 3: PHÂN TÍCH VÀ THIT K NG DNG 57
3.1. Gii thiu 58
3.2. S đ Use Case 58
3.3. Thit k các lp 71
3.3.1. C s d liu 71
3.3.2. Các lp phía Server 72
3.3.3. Các lp phía Client 82
CHNG 4: HIN THC NG DNG 88
4.1. Các chc nng đã hin thc đc 89
4.2. Mt s giao din ng dng 89
4.3. Cài đt và s dng 92
4.3.1. Yêu cu h thng 92
4.3.2. Cài đt 92
4.3.3. S dng 93
CHNG 5: KT LUN 95
5.1. Mt s kt qu đt đc 96
5.2. Hn ch 96
5.3. Hng phát trin 96
TÀI LIU THAM KHO 97
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành vii
DANH MC HÌNH
Hình 2.1: Kin trúc phân cp client – server XMPP 7
Hình 2.2: Cu trúc tng tác ca stanza IQ 12
Hình 2.3: Quá trình bt tay đng ký s hin din 20
Hình 2.4: Các trng thái trò chuyn trong XMPP 26
Hình 2.5: Quy trình tng tác d liu Data Form 31
Hình 2.6: Quá hot đng ca mt phiên Jingle 45
Hình 3.1: Mô hình tng quát ng dng 58
Hình 3.2: Mô hình thao tác sau đng nhp 59
Hình 3.3: Lu đ kt ni 59
Hình 3.4: Lu đ đng ký 60
Hình 3.5: Lu đ ngt kt ni 61
Hình 3.6: Lu đ đng nhp 62
Hình 3.7: Lu đ đng xut 63
Hình 3.8: Lu đ thêm bn 64
Hình 3.9: Lu đ xóa bn 65
Hình 3.10: Lu đ gi tin nhn 66
Hình 3.11: Lu đ to phòng chat 67
Hình 3.12: Lu đ mi bn vào phòng chat 68
Hình 3.13: Lu đ gi tin nhn lên phòng chat 69
Hình 3.14: Lu đ gi file 70
Hình 3.15: Bng Account 71
Hình 3.16: Bng ContactList 71
Hình 3.17: Mô hình c s d liu 72
Hình 3.18: S đ các lp phía Server 72
Hình 3.19: Lp Parser 73
Hình 3.20: Lp JID 74
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành viii
Hình 3.21: Lp CADO 74
Hình 3.22: Lp Tag 75
Hình 3.23: Lp ClientGroup 76
Hình 3.24: Lp Roster 76
Hình 3.25: Lp CServerApp 76
Hình 3.26: Lp Base64 77
Hình 3.27: Lp Util 77
Hình 3.28: Lp ConnectionClient 77
Hình 3.29: Lp ConnectionServer 78
Hình 3.30: Lp ConnectionBase. 78
Hình 3.31: Giao din TagHandler 79
Hình 3.32: Giao din ConnectionDataHandler 79
Hình 3.33: Lp ClientHandler 80
Hình 3.34: Giao din ConnectionHandler 80
Hình 3.35: Giao din ServerHandler 81
Hình 3.36: Lp CServerDlg 82
Hình 3.37: S đ các lp phía Client 83
Hình 3.38: Giao din NotifyHandler 83
Hình 3.39: Lp ClientProcess 84
Hình 3.40: Lp CChatDlg 85
Hình 3.41: Lp CLoginDlg 85
Hình 3.42: Lp CRegisterDlg 86
Hình 3.43: Lp CClientApp 86
Hình 3.44: Lp CAddContactDlg 86
Hình 4.1: Giao din Server 89
Hình 4.2: Giao din chính Client 90
Hình 4.3: Ca s đng ký tài khon 90
Báo cáo khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành ix
Hình 4.4: Ca s đng nhp 91
Hình 4.5: Ca s thêm bn 91
Hình 4.6: Ca s khi có yêu cu thêm bn 91
Hình 4.7: Ca s chat 92
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 1
CHNG 1: TNG QUAN
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 2
1.1. Tng quan v đ tài
Trong cuc sng, nhu cu thông tin liên lc là ht sc cn thit. c bit, trong
môi trng mà công ngh thông tin phát trin mt cách nhanh chóng nh hin
này thì các công ngh mi liên tc xut hin nhm phc v nhu cu thông tin liên
lc cho con ngi. Và cng theo mt xu hng tt yu khi càng có nhiu công
ngh thì đòi hi ca ngi s dng càng cao, yêu cu vic thông tin liên lc phi
d dàng, nhanh chóng, hiu qu và ti
n li.
Instant Messaging (IM) ra đi cng t nhng nhu cu thc t đó. IM là mt
hình thc giao tip thi gian thc gia các máy tính trên mng hoc các thit b
di đng có ni mng. Ngi s dng có th trao đi các tin nhn tng t nh
email hoc tham gia vào các cuc hi thoi nhóm, tuy nhiên IM khác email ch
các tin nhn này đc gi đi và nhn mt cách nhanh chóng và các thao tác gi
nhn cng đ
n gin hn rt nhiu so vi email. V c bn mc tiêu ca các ng
dng Instant Messaging là trao đi các tin nhn vn bn, tuy nhiên theo xu hng
phát trin và yêu cu ca ngi s dng ngày càng cao thì các ng dng IM hin
nay tích hp thêm rt nhiu chc nng, có th k ra nh: trao đi hình nh, âm
thanh, hình nh, các tp d liu, ngoài ra mt s ng dng còn cho phép ngi s
dng nghe nh
c trc tuyn, chi game, xem tin tc, …
Vi vic phát trin mnh m ca các ng dng Instant Messaging thì mt lot
các giao thc đ hin thc ng IM cng ra đi. Có th k ra nh MSNP ca
Windows Live Messenger, OSCAR ca AIM, Skype ca Skype, YMSG ca
Yahoo Messenger, c đim chung ca nhng giao thc này đu là nhng
giao thc thng mi, ch phc v riêng cho ng dng ca hãng sn xut.
Bên c
nh đó nhng giao thc m nh Extensible Messaging and Presence
Protocol (XMPP) cng ra đi nh mt hng phát trin mi ca các ng dng
Instant Messaging, khi đó ngi s dng ca các ng dng IM khác nhau có th
liên lc vi nhau d dàng, khác vi s tách bit đc lp ca nhng ng dng nh
AIM, Yahoo, Windows Live Messenger, …
1.2. Các vn đ đã thc hin trong đ tài
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 3
s dng giao thc XMPP cùng vi Windows Socket API hin thc mt
ng dng Instant Messaging, đ tài cn gii quyt nhng vn đ sau:
ô Tìm hiu chi tit giao thc XMPP.
ô Da trên th vin Windows Socket API và giao thc XMPP xây dng các
lp h tr vic kt ni gia client và server, mô t cu trúc XML, phân tích
cu trúc XML.
ô Cài đt ng dng v
i nhng chc nng c bn và có th m rng.
1.3. B cc ca khóa lun
Ni dung khóa lun gm 5 chng:
ô Chng 1. Tng quan.
ô Chng 2. C s lý thuyt XMPP.
ô Chng 3. Phân tích và thit k ng dng.
ô Chng 4. Hin thc ng dng.
ô Chng 5. Kt lun.
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 4
CHNG 2: C S LÝ THUYT XMPP
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 5
2.1. Messaging and Presence Protocol (XMPP)
2.1.1. Gii thiu
Extensible Messaging and Presence Protocol (XMPP) là mt giao thc m,
trc kia có tên là Jabber. XMPP da trên nn tng là cu trúc XML
(Extensible Markup Language), nói c th hn XMPP là con đng vn
chuyn các gói tin XML gia các thc th trên mng.
Không ging nh hu ht các giao thc Instant Messaging khác, XMPP là
mt giao thc m, chính vì điu này đã làm cho XMPP đc s dng khá rng
rãi, bt c cá nhân nào đu có th tin hành trin khai mt dch v XMPP ca
riêng mình và hoàn toàn có th
tng thích vi mt s dch v ca mt cá
nhân khác. Và thông thng nhng ng dng này đu đc cung cp di
dng mã ngun m hoc min phí, điu này s là tin đ đ thu hút s mt
lng ln ngi s dng so vi các ng dng Insant Messaging khác trong
tng lai.
Trong thi gian đu Jabber ch tp trung phát trin h thng Instant
Messaging, tuy nhiên vi kh
nng m rng ca XML nên XMPP cng đã
đc xây dng đ cung cp các chc nng khá đa dng và phong phú. V c
bn XMPP cung cp các dch v h tr sau:
Å Mã hóa đng truyn (Channel encryption): đnh ngha trong RFC-3920,
cung cp kh nng mã hóa kt ni gia client – server hay gia các server
vi nhau.
Å Xác thc (Authentication): đnh ngha trong RFC-3920, cung cp kh
nng xác thc mt thc th khi l
n đu tiên kt ni đn server.
Å Hin din (Presence): đnh ngha trong RFC-3921, cung cp kh nng
thông báo mt thc th có tn ti trên mng hay ko, đng thi có th kèm
theo mt s thông tin v thc th đó.
Å Danh sách liên lc (Contacts lists): đnh ngha trong RFC-3921, cung cp
kh nng lu tr danh sách liên lc ca mt thc th trên server.
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 6
Å One-to-one messaging: đc đnh ngha trong RFC-3920, cho phép 2
thc th gi tin nhn qua li vi nhau.
Å Multi-party messaging: đnh ngha trong XEP-0045, cung cp chc nng
cho mt thc th tham gia vào mt nhóm và trao đi tin nhn qua li gia
các thc th khác trong nhóm đó.
Å Thông báo (Notifications): đc đnh ngha trong XEP-0060, cung cp
chc nng tng t vi “multi-party messaging”, tuy nhiên đã đc t
i u
hóa theo chiu t mt đn nhiu thc th vi mt ch đ c th.
Å Service discovery: đnh ngha trong XEP-0030, cung cp kh nng xác
đnh các chc nng đc cung cp ca mt thc th.
Å Capabilities advertisement: đc đnh ngha trong XEP-0115, là mt
chc nng m rng ca dch v “presence”, xác đnh các hành vi x lý có
th đáp ng ca m
t ng dng khi nhn đc mt thông đip “presence” t
mt ng dng khác.
Å Structured data forms: đnh ngha trong XEP-0004, cung cp kh nng
trao đi thông tin có cu trúc gia các thc th.
Å Workflow management: đnh ngha trong XEP-0050, thng đc s
dng kt hp vi data forms đ qun lý các quy trình công vic.
Å Peer-to-peer media sessions: đnh ngha trong XEP-0166, cung cp kh
nng to và qun lý các phiên trong vic trao đi các d liu đa phng tin
nh âm thanh, hình nh, tp d liu.
Vi s lng dch v đa dng trên, XMPP cung cp kh nng xây dng các
ng dng khá phong phú, sau đây là mt s ng dng tiêu biu:
Å Instant Messaging.
Å Groupchat.
Å Gaming.
Å System control.
Å Geolocation.
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 7
Å Middleware and cloud computing.
Å Data syndication
Å Voice over IP
Å Identity services.
2.1.2. Kin trúc
XMPP s dng kin trúc phân cp client – server. Ngha là các client không
kt ni và trao đi thông tin trc tip vi nhau mà phi thông qua server.
Hình 2.1: Kin trúc phân cp client – server XMPP
Ngun: Oreilly (2009), XMPP The Definitive Guide, Trang 12
im hay ca vic s dng kin trúc phân cp client – server là có th phân
chia mt cách rõ ràng các mi quan tâm trong vic xây dng ng dng. i
vi vic phát trin client thì tp trung vào giao din, mc đ tin li cho ngi
s dng, trong khi đó đi vi phát trin server thì tp trung vào đ bo mt, tin
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 8
cy và kh nng m rng ca ng dng. Nó đn gin hn rt nhiu trong vic
t ch qun lý các ng dng s dng công ngh ngang hàng. Và do đó cng
đng XMPP s xây dng client đn gin nht có th, trong khi đó s phc tp
s đc đy mnh khi phát trin các server.
Kin trúc c
a XMPP có khá nhiu đim tng đng vi kin trúc World
Wide Web và Email tuy nhiên cng có mt s đim khác bit:
XMPP ging Email trong kh nng kt ni liên tên min, còn World Wide
Web thì không h tr.
Trong khi Email h tr “multiple hop” ngha là kh nng kt ni gia nhiu
server vi nhau, thì XMPP ch h tr kt ni “single hop” là ch kt ni gia 2
server vi nhau, còn World Wide Web thì không h tr chc nng này.
2.1.3. a ch (Address)
Mi thc th XMPP trên mng đc xác đnh bi mt đa ch gi là
JabberID (JID). C bn XMPP da trên h thông tên min DNS đ xây dng
cu trúc ca mt đa ch thay vì s dng đa ch IP. JID khá ging vi mt đa
ch email có dng
º
Domain
Là giá tr full qualified domain name (FQDN) ca server ni cài đt mt
dch v XMPP, ví d test.xmpp
º
Users
Khi mt tài khon đc to ti mt dch v XMPP, h thng s t đng gán
giá tr tài khon đc to vào mt JabberID có dng tng t nh mt đa ch
email (), giá tr này thng đc gi là “bare JID”
().
º
Resources
XMPP có kh nng cung cp cho mt tài khon có th đng nhp nhiu ln
vào h thng ti cng mt thi đi
m, tuy nhiên mi ln đng nhp tài khon
phi xác đnh mt giá tr gi là tài nguyên (resource) khác nhau. Khi đó giá tr
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 9
tài nguyên này s đc thêm vào cui giá tr JID ca tài khon đó ví d
/home. Giá tr tài nguyên này có th là tên đa đim, tên
máy, tên phn mm mà tài khon dùng đ đng nhp. Giá tr có dng
/resource thng đc gi là “full JID”.
2.1.4. Streaming XML
V bn cht, XMPP là mt công ngh cho phép x lý các lung XML.
Trc tiên mt XMPP client phi thit lp mt kt n
i TCP đn XMPP server.
Sau đó client s thit lp mt lung XML đn server, và server cng thit lp
mt lung tng t theo chiu ngc li. Khi qua trình thit lp lung kt thúc,
gia client và server s trao đi các th XML c bn có 3 loi: <message/>,
<presence/>, <iq/>, đc gi là “stanzas”.
Di đây là mt ví d đn gin.
C: <stream:stream>
C: <presence/>
C: <iq type=“get”>
<query xmlns=“jabber:iq:roster”/>
<iq/>
S: <iq type=“result”>
<query xmlns=“jabber:iq:roster”>
<item jid=“”/>
<item jid=“user02@ test.xmpp”/>
<item jid=“user03@ test.xmpp”/>
<query/>
C: <message from=“user04@ test.xmpp”
to=“user01@ test.xmpp”>
<body>Hello!</body>
</message>
S: <message from=“user05@ test.xmpp”
to=“user02@ test.xmpp”>
<body>Hi.</body>
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 10
</message>
C: <presence type=“unavailable”/>
C: </stream:stream>
Ghi chú:
Å C: stanzas t client.
Å S: stanzas t server.
2.1.5. Communication Promitives
V c bn các stanza trong XMPP là mt đn v truyn thông tin, tng t
nh mt gói tin hay bn tin các giao thc khác, mi stanza đu có mt ý
ngha và tác dng riêng, s đc trình bày sau đây.
º
Stanza Message
Stanza message có chc nng truyn thông tin t thc th này đn thc th
khác trên mng. Thông thng, các stanza message khi đc gi đi s không
nhn đc thông tin xác nhn là đã gi, điu này giúp gim bt thi gian x lý
đng thi cng gim bt mt lng bng thông đáng k trên mng dành cho
vic xác nhn. Stanza message đc phân thành 5 loi, tùy vào giá tr ca
thuc tính type:
Å normal: tng t nh mt email vì nó có th đc tr li hoc không.
Å
chat: th hin vic trao đi tin nhn theo phiên trong thi gian thc gia
2 thc th.
Å groupchat: trao đi tin nhn gia mt nhóm thc th.
Å headline: dùng đ gi mt thông báo.
Å error: nu có li trong quá trình gi tin nhn trc thì mt bn tin error
s đc gi v.
Ngoài các thuc tính type trong mt stanza message còn các thuc tính nh
to, from dùng đ xác đnh đa ch ngi gi và nhn và có giá tr là mt
JabberID, hay body, subject th hin ni dung bn tin, hay tiêu đ bn tin.
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 11
Ví d:
<message from=“user05@ test.xmpp”
to=“user02@ test.xmpp”>
<body>Hi.</body>
</message>
º
Stanza Presence
Nhn bit s hin din ca nhau trên mng là mt trong nhng đc tính ni
bt ca các h thng giao tip thi gian thc nh Instant Messaging. c tính
này có chc nng thông báo đn các thc th khác v s hin din (online) ca
mt thc th nào đó, và ch khi mt th
c th online thì mi có th tip nhn
các thông đip và giao tip vi các thc th khác. Và tt nhiên đ đm bo tính
riêng t thì không hoàn toàn lúc nào mt thc th cng mun nhn bit s hin
din ca thc th khác hoc ngc li, thông thng đ gii quyt vn đ này
các h thng thng cho phép các thc th đng ký s hin din v
i nhau.
XMPP, stanza presence đm nhim chc nng nói trên. V c bn s hin
din ch cn xác nhn mt thc th có trên mng hay không, tuy nhiên
XMPP, chc nng này đc m rng thêm nh cho phép tùy chnh trng thái
ca mt thc th bng mt chui vn bn tùy ý, …
Ví d:
<presence from=“user01@ test.xmpp”
<show>chat</show>
<status>Xin chào</status>
</presence>
º
Stanza IQ
Tng t nh các phng thc GET, POST, PUT trong HTTP, stanza IQ
(Info, Query) cung cp c
u trúc tng tác dng yêu cu – tr li đn gin.
Khác vi stanza message stanza IQ s nhn đc mt bn tin tr li khi gi đi.
Thông thng trong mi stanza IQ luôn tn ti thuc tính id giúp xác đnh các
bn tin tr li khi mt stanza IQ đc gi đi. Stanza IQ có 4 loi đc xác
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 12
đnh theo giá tr ca thuc tính type:
Å get: yêu cu thông tin t mt thc th tng t HTTP GET.
Å set: cung cp thông tin hay là to mt yêu cu mi tng t HTTP
POST, PUSH.
Å result: tr v kt qu ca mt IQ-get, hoc là xác nhn mt IQ-set.
Å error: thông báo li cho mt IQ-set hoc get.
Hình 2.2: Cu trúc tng tác ca stanza IQ
Ngun: Oreilly (2009), XMPP The Definitive Guide, Trang 22
Ví d:
<iq from=“/school”
id=“id000001”
to=“user01@ test.xmpp”
type=“get”>
<query xmlns=“jabber:iq:roster”/>
</iq>
<iq from=“user01@ test.xmpp”
id=“id000001”
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 13
to=“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”/>
</query>
</iq>
º X lý li (Error Handling)
Ngoài tr stanza IQ thì các bn tin khác trong XMPP khi đc gi đi s
không nhn đc bt k mt thông tin xác nhn nào, thông thng, khi không
có bn tin báo li thì có ngha là đã gi thành công. to ra mt bn tin li
XMPP cung cp thành phn <error/> đc thêm vào stanza message hay
presence. xác đnh chính xác li xy ra XMPP cung cp giá tr thu
c tính
type cho thành phn <error/> cùng vi các thành phn con bên trong
<error/>.
Ví d:
<message from=“”
to=“”
type=“error”>
<error type=“cancel”>
<service-unavailable xmlns=“urn:ietf:params:xml:ns:xmpp-
stanzas”/>
</error>
</message>
Giá tr ca type trong <error/> ngoài cancel ra có th là auth, continue,
modify hoc wait. Tuy nhiên ý ngha chính các li đây th hin bi các phn
t con bên trong <error/>, ví d trên là <service-unvailable/> nhng cng
có th là <item-not-found/>, <forbidden/>, <bad-request/>, <conflict/>,
<gone/>, … Danh sách li này đc th hin
đy đ trong RFC-3920.
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 14
2.2. Kt ni và bo mt
2.2.1. To kt ni gia client – server
V c bn, quá trình trao đi thông tin gia client và server là mt khi
cha các th XML gi là lung XML (XML stream). ng vi mi lung XML
gia client – server tng đng nh mt phiên làm vic, client khi to mt
phiên bng cách kt ni ti server, xác đnh các thuc tính kt ni và tin hành
thao tác kt ni, sau đó client s tham gia vào các hot đng giao tip vi các
client khác trên mng, phiên s
kt thúc khi client hoc server quyt đnh đóng
lung XML.
to mt phiên làm vic gia client – server, tin hành mt s bc sau:
Å To kt ni TCP t client đn server.
Å M lung XML.
Å Xác đnh các đc đim ca kt ni.
Å Client xác thc vi server.
Å Xác đnh giá tr tài nguyên (resource).
º
To kt ni TCP
Trc tiên client phi xác đnh đ
a ch IP và port ca server bng các dch
v DNS và thit lp kt ni TCP đn server vi đa ch IP và port đã xác đnh.
º
To lung XML
Client s gi chui XML khi to đn server:
<?xml version=”1.0”?>
<stream:stream to=”test.xmpp”
version=”1.0”
xmlns=”jabber:client”
xmlns:stream=”
đây, thuc tính to trong th <stream:stream/> xác đnh đa ch ca
server, version xác đnh phiên bn ca XMPP, vì là lung t client đn server
Khóa lun tt nghip GVHD: Thy Hunh Minh Quang
SVTH: Trn Trung Thành 15
nên giá tr xmlns là jabber:client, và là giá
tr mc đnh cho xmlns:stream.
Ngay sau khi nhn đc chui XML khi to trên, server cng s m mt
lung XML đn client:
<?xml version=”1.0”?>
<stream:stream from=”test.xmpp”
id=”id152635”
version=”1.0”
xmlns=”jabber:client”
xmlns:stream=”
Giá tr thuc tính id đc sinh ra mt cách ngu nhiên, và giá tr này giúp
server xác đnh chính xác lung đã m.
º
Xác đnh các đc đim kt ni
Ngay sau khi m
lung XML đn client, server s gi đn client các chc
nng mà server h tr hoc yêu cu:
<stream:features>
<starttls xmlns=”urn:ietf:params:xml:ns:xmpp-tls”>
<optional/>
<mechanisms xmlns=”urn:ietf:params:xml:ns:xmpp-sasl”>
<mechanism>PLAIN</mechanism>
<mechanism>DIGES-MD5</mechanism>
<required/>
<mechanisms/>
<compression xmlns=”
<method>zlib</method>
<compression/>
</stream:features>
đây các tính nng mà server h tr nh:
Å Starttls: chc nng mà hóa đng truyn.