1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng ứng dụng Instant Message theo giao thức XMPP

107 661 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 107
Dung lượng 1,16 MB

Nội dung

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 1

KHOA 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 2

L 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 3

NH N XÉT C A GI NG VIÊN H NG D N

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

NH N XÉT C A GIÁO VIÊN PH N BI N

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 5

DANH 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 6

M 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 7

2.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 8

DANH 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 9

Hì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 10

Hì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 11

CH NG 1: T NG QUAN

Trang 12

1.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 13

s 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 14

CH NG 2: C S LÝ THUY T XMPP

Trang 15

2.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 18

c 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 19

tà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 20

V 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 21

Nh 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 23

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”/>

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 24

Tr 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 25

nê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 27

Sau 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 28

gi 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 29

tin 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 30

quá 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 34

Ph 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 36

m 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 37

XMPP 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 39

nhi 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 40

conference.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:

Ngày đăng: 12/05/2015, 20:47

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w