TRƯỜNG ĐẠI HỌC MỞ TP. HỒ CHÍ MINH
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:
MSSV:
Ngành:
GVHD:
Trần Trung Thành
10761278
Tin Học
Thầy Huỳnh Minh Quang
Thành phố Hồ Chí Minh – Năm 2011
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
tương lai.
Quá trình thực hiện khóa luận tốt nghiệp vừa qua là cơ hội để em có thể áp
dụng những kiến thức mà trong suốt 4 năm qua em đã được học tập, cùng với
hướng dẫn tận tình của thầy Huỳnh Minh Quang em đã hoàn thành đề tài của
mình.
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.
Sinh Viên
Trần Trung Thành
SVTH: Trần Trung Thành
i
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
SVTH: Trần Trung Thành
ii
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
SVTH: Trần Trung Thành
iii
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt
Từ nguyên gốc
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
SVTH: Trần Trung Thành
iv
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
v
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
vi
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
vii
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
viii
Báo cáo khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
ix
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
CHƯƠNG 1: TỔNG QUAN
SVTH: Trần Trung Thành
1
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
SVTH: Trần Trung Thành
2
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
Để 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
cấu trúc XML.
Ô Cài đặt ứng dụng với những chức năng cơ bản và có thể mở rộng.
1.3. Bố cục của khóa luận
Nội dung khóa luận gồm 5 chương:
Ô Chương 1. Tổng quan.
Ô Chương 2. Cơ sở lý thuyết XMPP.
Ô Chương 3. Phân tích và thiết kế ứng dụng.
Ô Chương 4. Hiện thực ứng dụng.
Ô Chương 5. Kết luận.
SVTH: Trần Trung Thành
3
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT XMPP
SVTH: Trần Trung Thành
4
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
tương lai.
Trong thời gian đầu Jabber chỉ tập trung phát triển hệ thống Instant
Messaging, tuy nhiên với khả năng mở rộng của XML nên XMPP cũng đã
được xây dựng để cung cấp các chức năng khá đa dạng và phong phú. Về cơ
bản XMPP cung cấp các dịch vụ hỗ trợ sau:
© Mã hóa đường truyền (Channel encryption): định nghĩa trong RFC-3920,
cung cấp khả năng mã hóa kết nối giữa client – server hay giữa các server
với nhau.
© 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.
SVTH: Trần Trung Thành
5
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
© 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
định các chức năng được cung cấp của một thực thể.
© Capabilities advertisement: được định nghĩa trong XEP-0115, là một
chức năng mở rộng của dịch vụ “presence”, xác định các hành vi xử lý có
thể đáp ứng của một ứng dụng khi nhận được một thông điệp “presence” từ
một ứng dụng khác.
© Structured data forms: định nghĩa trong XEP-0004, cung cấp khả năng
trao đổi thông tin có cấu trúc giữa các thực thể.
© 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:
© Instant Messaging.
© Groupchat.
© Gaming.
© System control.
© Geolocation.
SVTH: Trần Trung Thành
6
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
© 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
SVTH: Trần Trung Thành
7
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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
chỉ email có dạng
[email protected].
Domain
Là giá trị full qualified domain name (FQDN) của server nơi cài đặt một
dịch vụ XMPP, ví dụ test.xmpp
Users
Khi một tài khoản được tạo tại một dịch vụ XMPP, hệ thống sẽ tự động gán
giá trị tài khoản được tạo vào một JabberID có dạng tương tự như một địa chỉ
email (
[email protected]), giá trị này thường được gọi là “bare JID”
(
[email protected]).
Resources
XMPP có khả năng cung cấp cho một tài khoản có thể đăng nhập nhiều lần
vào hệ thống tại cũng một thời điểm, tuy nhiên mỗi lần đăng nhập tài khoản
phải xác định một giá trị gọi là tài nguyên (resource) khác nhau. Khi đó giá trị
SVTH: Trần Trung Thành
8
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
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ụ
[email protected]/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
[email protected]/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:
,
,
, được gọi là “stanzas”.
Dưới đây là một ví dụ đơn giản.
C:
C:
C:
S:
-
C:
Hello!
S:
Hi.
SVTH: Trần Trung Thành
9
Khóa luận tốt nghiệp
GVHD: Thầy Huỳnh Minh Quang
C:
C:
Ghi chú:
© C: stanzas từ client.
© S: stanzas từ server.
2.1.5. Communication Promitives
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.
SVTH: Trần Trung Thành
10