Hiện nay các ứng dụng trò chuyện trực tuyến nhiều vô số kể, bên cạnhnhững ứng dụng thành công thì cũng không ít những dụng đã chết ngay khi bắtđầu hoạt động vì không thể cạnh tranh nổi v
Trang 1ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG CHAT GIỮA CLIENT VÀ
SERVER
Sinh viên thực hiện : Mai Trúc Lân
Nguyễn Nguyên Ngọc Phú Giảng viên hướng dẫn : ThS.Phan Thị Quỳnh Hương
Đà Nẵng, tháng 12 năm 2019
Trang 2MỞ ĐẦU
Những tiến bộ to lớn về công nghệ, đặc biệt là công nghệ thông tin trongnhững thập niên cuối của thế kỷ 20 đã tạo ra bước ngoặt mới cho sự phát triểnkinh tế xã hội toàn cầu Nhu cầu trao đổi thông tin, liên lạc giữa con người vì thếngày càng tăng cao Để đáp ứng nhu cầu đó, những website, ứng dụng di độnggiúp con người trao đổi, liên lạc trực tuyến xuất hiện ngày một nhiều
Nhắc đến ứng dụng trao đổi thông tin, liên lạc thì không thể không nhắcđến những gã khổng lồ như Messenger của Facebook, Zalo của Việt Nam, và vô
số những ứng dụng khác trên thị trường Mỗi ứng dụng đều có điểm mạnh và yếuriêng của mình Chung quy lại, chức năng chính của những ứng dụng này là đểgửi nhận tin nhắn văn bản, hình ảnh hoặc tệp đính kèm Một số ứng dụng sẽ cóchức năng hội thoại, thậm chí là trò chuyện bằng video
Điểm mạnh của ứng dụng trò chuyện trực tuyến đó là tính tiện lợi, nhanhchóng và tiết kiệm Chỉ cần có internet, mọi thông tin hay tệp dữ liệu của bạn cóthể gửi đến bất cứ đâu, bất cứ lúc nào với tốc độ cực kỳ nhanh Không cần tốntiền gửi thư, gửi bưu phẩm, hay phải chờ hàng tháng trời để nhận được thư vàphản hồi
Hiện nay các ứng dụng trò chuyện trực tuyến nhiều vô số kể, bên cạnhnhững ứng dụng thành công thì cũng không ít những dụng đã chết ngay khi bắtđầu hoạt động vì không thể cạnh tranh nổi với những ứng dụng mạnh mẽ trướcđó
Trang 3
LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ vàhướng dẫn rất tận tình của các thầy cô thuộc Khoa Công Nghệ Thông Tin VàTruyền Thông – Đại Học Đà Nẵng Em xin cảm ơn các thầy cô thuộc bộ mônchuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quýbáu và cần thiết trong suốt thời gian quá để em có thể thực hiện và hoàn thành
đồ án của mình Đặc biệt em xin chân thành cảm ơn cô Phan Thị Quỳnh Hương,người đã trực tiếp hướng dẫn chúng em trong thời gian thực hiện đồ án này
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thựctiễn, nên đề tài không tránh khỏi những sai sót Em rất mong nhận được sựthông cảm của quý thầy cô và mong đón nhận những góp ý của thầy cô và cácbạn
Em xin chân thành cảm ơn!
Trang 4NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, ngày … tháng … năm 20…
Giảng viên hướng dẫn
THS.PHAN THỊ QUỲNH HƯƠNG
Trang 5MỤC LỤC
Chương 1: 7
GIỚI THIỆU 7
1.1 Tổng quan: 7
1.1.1 Bối cảnh thực hiện đề tài: 7
1.1.2 Vấn đề cần giải quyết: 7
1.1.3 Đề xuất nội dung thực hiện: 8
1.2 Phương pháp, kết quả: 8
1.2.1 Phương pháp: 8
1.2.2 Kết quả: 8
Chương 2: 9
NGHIÊN CỨU ĐỀ TÀI 9
2.1 Giới thiệu về trò chuyện trực tuyến: 9
2.2 Một số ưu và nhược điểm của trò chuyện trực tuyến: 9
2.2.1 Ưu điểm: 9
2.2.2 Nhược điểm: 10
2.3 Một số ứng dụng trò chuyện trực tuyến tiêu biểu: 10
2.3.1 Facebook Messenger: 10
2.3.2 Zalo: 10
2.4 Tổng quan về các công nghệ và mô hình sử dụng trong dự án: 11
2.4.1 Java: 11
2.4.2 Socket.IO: 13
2.4.3 Giao thức TCP/IP: 15
Chương 3: 20
THỰC HIỆN DỰ ÁN VÀ KẾT QUẢ 20
3.1 Các ngôn ngữ và công nghệ sử dụng cho dự án: 20
3.2 Các chức năng của ứng dụng: 20
3.2.1 Các chức năng chính: 20
3.2.2 Hạn chế tồn tại: 20
3.3 Cách thức thực hiện: 20
a Server: 20
b Client: 21
c Xử lý đăng nhập: 21
d Xử lý đăng ký: 21
Trang 6e Gửi tin nhắn: 22
f Truyền file: 22
3.4 Kết quả: 22
3.4.1 Giao diện: 22
ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 29
Đánh giá tổng quan dự án: 29
Hướng phát triển: 29
DANH MỤC THAM KHẢO 30
Trang 7Chương 1:
GIỚI THIỆU1.1 Tổng quan:
1.1.1 Bối cảnh thực hiện đề tài:
Trong quá trình phát triển xã hội, công nghệ thông tin đã và đang phát triểnmạnh mẽ, ngày càng thâm nhập sâu, trở thành một công cụ hỗ trợ đắc lực cho conngười trong mọi lĩnh vực
Nhu cầu liên lạc, trao đổi thông tin giữa người với người ngày càng tăngcao và cần thiết Dựa trên xu thế phát triển của xã hội cũng như nhu cầu thiết thựccủa con người, ứng dựng trò chuyện trực tuyến ra đời
1.1.2 Vấn đề cần giải quyết:
Để đáp ứng nhu cầu liên lạc trực tuyến, chạy theo xu hướng phát triển của
xã hội Một ứng dụng trò chuyện trực tuyến cần đáp ứng được những yêu cầuthiết yếu như trò chuyện văn bản, trao đổi hình ảnh, tệp dữ liệu, hay thậm chí làthực hiện các cuộc hội thoại bằng giọng nói hay trò chuyện bằng hình ảnh trựctuyến (video chat) Vấn đề thứ nhất cần giải quyết là đảm bảo ứng dụng có đầy đủcác chức năng cần thiết
Một điều cực kỳ quan trọng nữa đó là bảo mật và an toàn thông tin cũngnhư dữ liệu của người dùng Vấn đề thứ hai là tính ổn định và bảo mật của ứngdụng
Hiện nay các ứng dụng trò chuyện trực tuyến nhiều vô số kể, bên cạnhnhững ứng dụng thành công thì cũng không ít những dụng đã chết ngay khi bắtđầu hoạt động vì không thể cạnh tranh nổi với những ứng dụng mạnh mẽ trước
đó Vấn đề thứ ba là khả năng marketing và cạnh tranh của ứng dụng
1.1.3 Đề xuất nội dung thực hiện:
Thực hiện khảo sát và nghiên cứu về thị trường, nhu cầu cung ứng củamảng này Nghiên cứu, tham khảo các ứng dụng đã có, những điểm mạnh và yếu
Trang 8Vì sao ứng dụng đó thành công hoặc thất bại Rút ra được những bài học từ nhữngngười đi trước.
1.2 Phương pháp, kết quả:
1.2.1 Phương pháp:
Nghiên cứu thị trường, tham khảo những ứng dụng đã có sẵn Tiếp thu điểmmạnh và loại bỏ điểm yếu lựa chọn những công nghệ tối ưu và hiện đại nhất
để bắt kịp xu thế phát triển không ngừng của công nghệ hiện nay
Tiến hành phân tích thiết kế, chỉ những rủi ro, tính khả thi cũng như bất khảthi của những công việc cần thực hiện
Sau khi phân tích, tiến hành thiết kế cơ sở dữ liệu, thiết kế giao diện và từngbước hoàn thiện, ghép nối dự án thành sản phẩm hoàn chỉnh
Sau khi có sản phẩm hoàn chỉnh, tiến hành thử nghiệm và chỉnh sửa, cập nhậtnhững sai sót
Cuối cùng là tổng kết và đưa ra hướng phát triển trong tương lai
1.2.2 Kết quả:
Nghiên cứu và học hỏi từ những ứng dụng nổi bật như Zalo, Messenger.Nghiên cứu và học tập các công nghệ mới, áp dụng để phát triển ứng dụngnhư Socket.IO
Sau quá trình thực hiện, kết quả thu được là một ứng dụng trò chuyện trựctuyến với các chức năng:
Trò chuyện văn bản giữa hai cá nhân
Trò chuyện văn bản giữa một nhóm gồm nhiều thành viên
Truyền tệp hình ảnh giữa hai cá nhân
Truyền tệp hình ảnh giữa một nhóm gồm nhiều thành viên
Hoạch định ra hướng phát triển trong tương lai
Trang 9Chương 2:
NGHIÊN CỨU ĐỀ TÀI
2.1 Giới thiệu về trò chuyện trực tuyến:
Trò chuyện trực tuyến (hay nhắn tin nhanh, tin nhắn tức khắc, chát –
từ chat trong tiếng Anh, IM viết tắt của Instant Messaging), là dịch vụ cho phép
hai người trở lên nói chuyện trực tuyến với nhau qua một mạng máy tính
Mới hơn IRC, nhắn tin nhanh là trò chuyện mạng, phương pháp nói chuyệnphổ biến hiện nay Nhắn tin nhanh dễ dùng hơn IRC, và có nhiều tính năng hay,như khả năng trò chuyện nhóm, dùng biểu tượng xúc cảm, truyền tập tin, tìm dịch
vụ và cấu hình dễ dàng bản liệt kê bạn bè
Nhắn tin nhanh đã thúc đẩy sự phát triển của Internet trong đầu thậpniên 2000
Có nhiều cách để thực hiện nhắn tin nhanh, thông qua các dịch vụnhư IRC, hay các dịch vụ của Yahoo!, Microsoft, do nhắn tin nhanh hỗ trợ rấtnhiều giao thức khác nhau Một số người dùng bị giới hạn vì sử dụng ứng dụngkhách chỉ truy cập một giao thức/mạng IM, như MSN hay Yahoo!
2.2 Một số ưu và nhược điểm của trò chuyện trực tuyến:
2.2.1 Ưu điểm:
Khá dễ dàng tiếp cận và sử dụng
Tính tiện dụng cao, có tể sử dụng mọi lúc mọi nơi thông qua internet
Tốc độ truyền tải nhanh, có thể truyền tải được nhiều dạng dữ liệu khácnhau như văn bản, âm thanh, hình ảnh…
Độ phổ biến rộng rãi
Trang 10 Tích hợp cho nhiều nền tảng cả smartphone (Android, iOS) và máy tính(Window, MacOS, Linux, Ubuntu).
2.2.2 Nhược điểm:
Phụ thuộc vào internet
Chưa đảm bảo được tính bảo mật và an toàn thông tin khi sử dụng
2.3 Một số ứng dụng trò chuyện trực tuyến tiêu biểu:
2.3.1 Facebook Messenger:
Facebook Messenger là dịch vụ và ứng dụng phần mềm tin nhắn tức thờichia sẻ giao tiếp bằng ký tự và giọng nói Được tích hợp trên ứng dụng chat củaFacebook và được xây dựng trên giao thức MQTT
Messenger cho phép người dùng Facebook trò chuyện với bạn bè trên cả diđộng và trang web chính Được tích hợp trên ứng dụng Chat (trò chuyện) củaFacebook và được xây dựng trên giao thức MQTT, Messenger cho phép ngườidùng Facebook trò chuyện với bạn bè trên cả di động và trang web chính
2.3.2 Zalo:
Zalo là một dịch vụ OTT (viết tắt của over the top - là thuật ngữ chỉ những
dữ liệu được cung cấp trên nền tảng Internet nhưng không một nhà cung cấpmạng hay bất kỳ tổ chức nào có thể can thiệp tới) Zalo từng lọt top ứng dụngđược nhiều người tải về nhất Cũng như Facebook, Zalo cho phép người dùng cóthể nhắn tin, gọi điện trò chuyện cùng bạn bè một cách miễn phí ở bất cứ đâu Đặcbiệt ứng dụng này do người Việt tạo ra và được phát triển bởi Vinagame
Zalo là từ kết hợp của Zing và Alo (câu thường được nói khi nghe máy ởViệt Nam)
Ứng dụng Zalo xuất hiện trên thị trường vào 08/08/2012 và đến tháng12/2012 thì ứng dụng nhắn tin thuần Việt này bắt hoạt động ổn định và dần phổbiến tại thị trường Việt Nam, hạ gục nhiều đối thủ đáng gờm trước đó
Trang 112.4 Tổng quan về các công nghệ và mô hình sử dụng trong dự án:
2.4.1 Java:
a Java là gì?
Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trìnhhướng đốitượng (OOP) và dựa trên các lớp (class) Khác với phần lớn ngôn ngữ lậptrình thông thường, thay vì biên dịchmã nguồn thành mã máy hoặc thôngdịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồnthành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtimeenvironment) chạy
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở SunMicrosystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa
là cây sồi; do bên ngoài cơ quan của ông Gosling có trồng nhiều loại câynày), họ dự định ngôn ngữ đó thay cho C++, nhưng các tính nănggiống Objective C Không nên lẫn lộn Java với JavaScript, hai ngôn ngữ
đó chỉ giống tên và loại cú pháp như C Công ty Sun Microsystems đanggiữ bản quyền và phát triển Java thường xuyên Tháng 04/2011, công tySun Microsystems tiếp tục cho ra bản JDK 1.6.24
Java được sử dụng chủ yếu trên môi trường NetBeans và Oracle
Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi"("Write Once, Run Anywhere" (WORA)) Chương trình phần mềm viếtbằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông quamột môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗtrợ nền tảng đó Môi trường thực thi của Sun Microsystems hiện hỗ trợ SunSolaris, Linux, Mac OS, FreeBSD & Windows Ngoài ra, một số công ty,
tổ chức cũng như cá nhân khác cũng phát triển môi trường thực thi Javacho những hệ điều hành khác như BEA, IBM, HP Trong đó đáng nóiđến nhất là IBM Java Platform hỗ trợ Windows, Linux, AIX & z/OS
b Đặc điểm của Java:
Trang 12 Hướng đối tượng: Trong ngôn ngữ lập trình Java, mọi thứ đều là Object Java có thể mở rộng vì nó dựa trên mô hình Object.
Đơn giản: Ngôn ngữ lập trình Java được thiết kế để dễ học Nếu như bạn
hiểu cơ bản về khái niệm lập trình hướng đối tượng Java, thì bạn có thể nắm bắt ngôn ngữ này rất nhanh
Nền tảng độc lập: Khác với các ngôn ngữ lập trình khác (C, C++), khi
ngôn ngữ lập trình Java được biên dịch, nó không biên dịch sang một máy tính cụ thể trên nền tảng nào, thay vào đó là các byte code độc lập với nền tảng Byte code này được phân phối ở trên web và được thông dịch bằng Virtual Machine (JVM) trên bất cứ nền tảng nào mà nó đang chạy
Bảo mật: Với tính năng an toàn của ngôn ngữ lập trình Java, nó cho phép
phát triển những hệ thống không có virus, giả mạo Các kỹ thuật xác thực dựa trên mã hóa công khai
Portable: Là kiến trúc trung lập và nó không phụ thuộc vào việc thực hiện
là các đặc điểm chính nhất khi nói về khía cạnh Portable của ngôn ngữ lập trình Java Trình biên dịch trong Java được viết bằng ANSI C với một ranhgiới portable gọn gàng, đây là một subset POSIX (giao diện hệ điều hành linh động) Bạn hoàn toàn có thể mang byte code của Java lên bất cứ nền tảng nào
Kiến trúc trung lập: Trình biên dịch của ngôn ngữ lập trình Java tạo ra
một định dạng file object có kiến trúc trung lập, nó làm cho code sau khi biên dịch có thể chạy trên nhiều bộ vi xử lý, với sự hiện diện của Java runtime system
Đa luồng: Với tính năng đa luồng của ngôn ngữ lập trình Java, lập trình có
thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời Tính năng độc đáo này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru
Mạnh mẽ: Ngôn ngữ lập trình Java nỗ lực loại trừ những tình huống dễ bị
lỗi bằng cách nhấn mạnh chủ yếu đó là kiểm tra lỗi thời gian biên dịch và kiểm tra runtime
Trang 13 Các công nghệ Big Data
Trong lĩnh vực giao dịch chứng khoán
Các ứng dụng khoa học
d Khuyết điểm của Java:
Hiệu suất: Tốn nhiều bộ nhớ hơn các ngôn ngữ được biên dịch nguyên
bản như C hoặc C ++
hiết kế giao diện: Các giao diện mặc định và thiết kế của các ứng dụng
GUI viết bằng Java sử dụng bộ công cụ Swing khá đơn giản
“keep-sự kiện, thay vì phải thực thi lại một loạt các thủ tục kết nối phức tạp nhưtrước, và ứng dụng của bạn sẽ trở thành ứng dụng thời gian thực ví dụ:Yahoo Messenger, Skype v.v… đều là các ứng dụng được xây dựng theo
mô hình Socket
Trong lập trình web trước đây, việc xây dựng client-server theo mô hìnhsocket phải thông qua các phần mềm thứ Vì mô hình socket không phùhợp với các ngôn ngữ lập trình Server như: PHP, ASP.NET, JSP v.v… Cácngôn ngữ này luôn làm việc theo cách: Die ngay connection khi Server trả
Trang 14lời Client xong Tuy nhiên, mình nhấn mạnh: Chúng ta có thể làm đượcweb-socket với bất kỳ ngôn ngữ lập trình nào Chỉ có điều, với các ngônngữ cũ, việc làm này cần bạn phải am hiểu các giao thức http, tcp; hiểu thếnào là 1 request header, v.v…
Socket là một điểm cuối (end-point) của liên kết truyền thông hai chiều(two-way communication) giữa hai chương trình chạy trên mạng Các lớpSocket được sử dụng để biểu diễn kết nối giữa client và server, được ràngbuộc với một cổng port (thể hiện là một con số cụ thể) để các tầng TCP(TCP Layer) có thể định danh ứng dụng mà dữ liệu sẽ được gửi tới
Lập trình socket là lập trình cho phép người dùng kết nối các máy tínhtruyền tải và nhận dữ liệu từ máy tính thông qua mạng
Hiểu đơn giản, socket là thiết bị truyền thông hai chiều gửi và nhận dữ liệu
từ máy khác
c Socket.IO là gì?
các bên ở những địa điểm khác nhau kết nối với nhau, truyền dữ liệu ngaylập tức thông qua server trung gian Socketio có thể được sử dụng trongnhiều ứng dụng như chat, game online, cập nhật kết quả của một trận đấuđang xảy ra,
Socket.IO không phải là một ngôn ngữ, mà chỉ là 1 công cụ giúp thực hiệnnhững ứng dụng realtime Vì thế, không thể sử dụng socketio để thay thếhoàn toàn cho một ngôn ngữ, mà phải sử dụng kết hợp với một ngôn ngữkhác Ngôn ngữ đó có thể là php, asp.net, nodejs,
d Cơ chế hoạt động của socket.IO:
Cơ chế hoạt động của một ứng dụng realtime đó là thông qua server để lắngnghe (listen) data và truyền data về các máy client Vì vậy cần cài khai báo
sử dụng socketio ở cả phía server và client
Trang 15 Để lắng nghe data, ta sử dụng câu lệnh socket.on(), để phát dữ liệu thì sửdụng lệnh socket.emit()
Ví dụ, client gửi 1 đoạn chat đi, thì khi đó ở phía server cần viết code đểnhận dữ liệu đoạn code đó và truyền dữ liệu chat đó đi đến các server khác.Đồng thời ở ở phía client cũng cần viết code để gửi và nhận dữ liệu từserver
Hình 01 Mô hình hoạt động của Socket.IO
2.4.3 Giao thức TCP/IP:
a Tổng quan:
TCP/IP là bộ giao thức cho phép kết nối các hệ thống mạng không đồng nhất với nhau Ngày nay TCP/IP được sử dụng rộng rãi trong mạng cục bộ cũng như mạng toàn cầu TCP/IP được xem như giản lược của mô hình tham chiếu OSIvới 4 tầng như sau:
Tầng Liên Kết (Datalink Layer)
Tầng Mạng (Internet Layer)
Tầng Giao Vận (Transport Layer)
Tầng Ứng Dụng (Application Layer)