32
ĐỒ ÁN CƠ SỞ VIỆT ANH – THANH HƯNG ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO LẬP ĐỒ ÁN CƠ SỞ ĐỀ TÀI: API ChatApp sử dụng NodeJS SocketIO và Swift UI Giảng viên hướng dẫn: Lê Song Toàn API ChatApp sử dụng SokcketIO và SwiftUI Trang 1

MẪU ĐỒ ÁN -KHOÁ LUẬN TỐT NGHIỆPdaotao.sict.udn.vn › ...bao-cao-viet-anh-thanh-hung.docx · Web viewServer trả về kết quả theo định dạng JSON hoặc XML

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

MẪU ĐỒ ÁN -KHOÁ LUẬN TỐT NGHIỆP

ĐỒ ÁN CƠ SỞVIỆT ANH – THANH HƯNG

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO LẬP ĐỒ ÁN CƠ SỞ

ĐỀ TÀI: API ChatApp sử dụng NodeJS SocketIO và Swift UI

Giảng viên hướng dẫn: Lê Song Toàn

Đà Nẵng, tháng 12 năm 2019

MỞ ĐẦU

Trong những năm gần đây, đặc biệt là bắt đầu từ năm 2010 trở lại. Cơn vũ bão smartphone tràn ngặp trong nước ta. Đến bây giờ ai ai cũng có một chiếc smartphone cho riêng mình. Smartphone là điện thoại thông minh tích hợp một nền tảng hệ điều hành di động vỡi nhiều tính năng hỗ trợ người dùng với nhiều công nghệ. Nó giúp chúng ta kết nối lại với nhau thông qua nền tảng của nó. Nói đến sự tiện lời khi smartphone giúp chúng ta kết nối thì mạng xã hội giúp chúng ta nói chuyện trao đổi với nhau mà còn giúp chúng ta liên lạc thuận tiện hơn trong mọi lúc mọi nơi khi chiếc điện thoại có kết nốt internet.

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 ứng dụng như Messenger, Skype, Zalo,… và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ếu riê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.

Trong giới công nghệ hiện nay API không còn lại một công nghệ xa lại nữa, Web API càng được sử dụng nhiều trong lập trình ứng dụng. API trở nên phổ biến vì sự thuận tiện vì lợi ích nó đem lại.  API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

Điểm mạnh của ứng dụng trò chuyện trực tuyến đó là tính tiện lợi, nhanh chó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ốn tiề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.

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 Lê Song Toàn giáo viên hướng dẫn chuyê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.

Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tôi trong quá trình nghiên cứu và thực hiện đề tài.

Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên đề tài không tránh khỏi những sai xó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ác bạn.

Em xin chân thành cảm ơn!

NHẬ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

Lê Song Toàn

MỤC LỤC

Chươ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ển mạ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 con ngườ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ăng cao 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ực của con người, ứng trò chuyện trực tuyến ra đời từ đó để giải quyết nhu cầu lớn này cửa mọi người. Một ứng dụng trò chuyện trực tuyết giúp chúng ta có thể trò chuyện trao đổi gửi các văn bản, hình ảnh,… đến với nhau thuận lợi thông qua việc kết nối Internet.

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ầu thiết yếu như trò chuyện văn bản, trao đổi hình ảnh, 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ực tuyến (video chat). Vấn đề thứ nhất cần giải quyết là đảm bảo ứng có đủ các chức năng cần thiết.

Một ứng dụng trò chuyện muốn được người dùng đón nhận cần phải hoạt động ổn định và dễ sử dụng. 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ũng như 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 ứng dụng.

1.2 Phướng pháp, kết quả:1.2.1 Phướng pháp:

Nghiên cứu thị trường người dùng, tham khảo những ứng dụng đã có sẵn. Tiếp thu điểm mạnh và loại bỏ điểm chưa tốt của ứng dụng, tìm cách tối ưu hơn những ứng dụng đã có trên thị trường.

Thực hiện nghiên cứu những công nghệ, công cụ cần sử dụng để thực hiện dự án. 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.

Sau khi đã nắm bắt được công nghệ và hướng đi, bắt tay vào lập kế hoạch triển khai dự án, đứa ra những công việc cụ thể cần thực hiện. 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ừng bướ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ật nhữ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 cách thức hoạt động và vận hành của API.

Nghiên cứu và học hỏi từ những ứng dụng nổi bật như Skype, Messenger.

Nghiên cứu và học tập được các công nghệ mới, được áp dụng để phát triển ứng dụng như Socket.IO để áp dụng tính của package readtime vào dự án.

Sau quá trình thực hiện, kết quả thu được là một ứng dụng trò chuyện trực tuyến với các chức năng:

· Tìm kiếm và kết bạn

· Trò chuyện văn bản giữa hai cá nhận.

· Trò chuyện nhóm

· Gửi hình ảnh

1.3 Cấu trúc đồ án:

Nguyên cứu tổng quan: giới thiệu cơ sở nghiên cứu lý thuyết, những mô hình, công nghệ được áp dụng trong quá trình xây dựng dự án:

· Giới thiệu tổng quan về API.

· Cách API hoạt động.

· Ưu nhược điểm.

· Giải pháp thực hiện cho ứng dụng.

· Giới thiệu về ứng dụng: Những công nghệ, mô hình sử dụng.

Triển khai xây dựng:

· Phân tích yêu cầu ứng dụng

· Phân tích và thiết kế hệ thống

· Xây dựng cở sở dữ liệu.

· Xây dựng giao diện.

· Code các module theo các chức năng đã phân tích

· Kết hợp các module lại với nhau để hoàn thiện sản phẩm

· Kiểm thức các chức năng và các lỗi xuất hiện

· Sửa các lỗi vẫn còn tồn động

Kết luận và hướng phát triển:

· Nhìn nhận, đánh giá ưu điểm và nhược điểm trong quá trình thực hiện dự án.

· Rút kinh nghiệm lần sau.

· Hoạch định ra hướng phát triển trong tương lai.

Chương 2:NGHIÊN CỨU TỔNG QUAN

2.1 Giới thiệu tổng quan về API:2.1.1 Giới thiệu tổng quan về API

API hay (Application Programming Interface) là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

Web API là một phương thức dùng để cho phép các ứng dụng khác nhau có thể giao tiếp, trao đổi dữ liệu qua lại. Dữ liệu được Web API trả lại thường ở dạng JSON hoặc XML thông qua giao thức HTTP hoặc HTTPS.

Web API hỗ trợ restful đầy đủ các phương thức: Get/Post/put/delete dữ liệu. Nó giúp bạn xây dựng các HTTP service một cách rất đơn giản và nhanh chóng. Nó cũng có khả năng hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content forma.

Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC contain, unit test.

2.1.1 Ứng dụng của API

· Web API: là hệ thống API được sử dụng trong các hệ thống website. Hầu hết các website đều ứng dụng đến Web API cho phép bạn kết nối, lấy dữ liệu hoặc cập nhật cơ sở dữ liệu. Ví dụ: Bạn thiết kế chức nằng login thông Google, Facebook, Twitter, Github… Điều này có nghĩa là bạn đang gọi đến API của. Hoặc như các ứng dụng di động đều lấy dữ liệu thông qua API.

· API trên hệ điều hành: Windows, MacOS hay Linux có rất nhiều API, họ cung cấp các tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối. Nó giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương tác trực tiếp với hệ điều hành.

· API của thư viện phần mềm hay framework: API mô tả và quy định các hành động mong muốn mà các thư viện cung cấp. Một API có thể có nhiều cách triển khai khác nhau và nó cũng giúp cho một chương trình viết bằng ngôn ngữ này có thể sử dụng thư viện được viết bằng ngôn ngữ khác.

2.2 API hoạt động như thế nào

1. Đầu tiên là xây dựng URL API để bên thứ ba có thể gửi request dữ liệu đến máy chủ cung cấp nội dung, dịch vụ thông qua giao thức HTTP hoặc HTTPS.

2. Tại web server cung cấp nội dung, các ứng dụng nguồn sẽ thực hiện kiểm tra xác thực nếu có và tìm đến tài nguyên thích hợp để tạo nội dung trả về kết quả.

3. Server trả về kết quả theo định dạng JSON hoặc XML thông qua giao thức HTTP/HTTPS.

4. Tại nơi yêu cầu ban đầu là ứng dụng web hoặc ứng dụng di động, dữ liệu JSON/XML sẽ được parse để lấy data. Sau khi có được data thì thực hiện tiếp các hoạt động như lưu dữ liệu xuống Cơ sở dữ liệu, hiển thị dữ liệu…

2.2 Một số ưu và nhược điểm của trò chuyện trực tuyến:2.3.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.

· Tính giao tiếp giữa các ứng dụng cao.

· Độ phổ biến rộng rãi.

2.3.2 Nhược điểm:

· Phụ thuộc vào Internet.

· Không truyền tải được dữ liệu quá lớn hay quá dài.

2.4 Tổng quan về các công nghệ và mô hình sử dụng trong dự án:

2.4.1 TCP/IP

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 OSI với 4 tầng như sau: o Tầng Liên Kết (Datalink Layer) o Tầng Mạng (Internet Layer) o Tầng Giao Vận (Transport Layer) o Tầng Ứng Dụng (Application Layer)

Hình 1: Các tầng trong bộ giao thức TCP/IP

Tầng liên kết: Tầng liên kết (còn được gọi là tầng liên kết dữ liệu hay tầng giao tiếp mạng) là tầng thấp nhất trong mô hình TCP/IP, bao gồm các thiết bị giao tiếp mạng và các chương trình cung cấp các thông tin cần thiết để có thể hoạt động, truy nhập đường truyền vật lý qua các thiết bị giao tiếp mạng đó.

Tầng Internet: Tầng Internet ( hay còn gọi là tầng Mạng) xử lý quá trình truyền gói tin trên mạng, các giao thức của tầng này bao gồm : IP ( Internet Protocol) , ICMP ( Internet Control Message Protocol) , IGMP ( Internet Group Message Protocol )

Tầng giao vận: Tầng giao vận phụ trách luồng dữ liệu giữa 2 trạm thực hiện các ứng dụng của tầng trên, tầng này có 2 giao thức chính là TCP ( Transmisson Control Protocol) và UDP ( User Datagram Protocol ) - TCP cung cấp luồng dữ liệu tin cậy giữa 2 trạm, nó sử dụng các cơ chế như chia nhỏ các gói tin ở tầng trên thành các gói tin có kích thước thích hợp cho tầng mạng bên dưới, báo nhận gói tin, đặt hạn chế thời gian timeout để đảm bảo bên nhân biết được các gói tin đã gửi đi. Do tầng này đảm bảo tính tin cậy nên tầng trên sẽ không cần quan tâm đến nữa - UDP cung cấp một dịch vụ rất đơn giản hơn cho tầng ứng dụng . Nó chỉ gửi dữ liệu từ trạm này tới trạm kia mà không đảm bảo các gói tin đến được tới đích. Các cơ chế đảm bảo độ tin cậy được thực hiện bởi tầng trên Tầng ứng dụng

Tầng ứng dụng là tầng trên của mô hình TCP/IP bao gồm các tiến trình và các ứng dụng cung cấp cho người sử dụng để truy cập mạng. Có rất nhiều ứng dụng được cung cấp trong tầng này , mà phổ biến là Telnet: sử dụng trong việc truy cập mạng từ xa, FTP ( File Transport Protocol ) dịch vụ truyền tệp tin., EMAIL : dịch vụ truyền thư tín điện tử. WWW ( Word Wide Web )

Phương thức hoặc động của bộ giao thức TCP/IP:

Hình 2: Phương thức hoạt động của bộ giao thức TCP/IP

Cũng tương tự như trong mô hình OSI, khi truyền dữ liệu, quá trình tiến hành từ tầng trên xuống tầng dưới, qua mỗi tầng dữ liệu được them vào thông tin điều khiển gọi là Header. Khi nhận dữ liệu thì quá trình xảy ra ngược lại. dữ liệu được truyền từ tấng dưới lên và qua mỗi tầng thì phần header tương ứng sẽ được lấy đi và khi đến tầng trên cùng thì dữ liệu không còn phần header nữa.

Hình 3: Cấu trúc dữ liệu trong TCP/IP

Hình trên cho ta thấy lược đồ dữ liệu qua các tầng.. Trong hình ta thấy tại các tầng khác nhau dữ liệu được mang những thuật ngữ khác nhau o Trong tầng ứng dụng: dữ liệu là các luồng được gọi là stream. o Trong tầng giao vận: đơn vị dữ liệu mà TCP gửi xuống gọi là TCP segment. o Trong tầng mạng, dữ liệu mà IP gửi xuống tầng dưới gọi là IP Datagram o Trong tầng liên kết, dữ liệu được truyền đi gọi là frame.

2.3.2 WebSocket

WebSocket là một giao thức truyền thông máy tính , cung cấp các kênh liên lạc song công hoàn toàn qua một kết nối TCP . Giao thức WebSocket đã được IETF chuẩn hóa thành RFC 6455 vào năm 2011. WebSocket khác với HTTP. Cả hai giao thức đều nằm ở lớp 7 trong mô hình OSI và phụ thuộc vào TCP ở lớp 4

WebSoket là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào.

· WebSockets mới xuất hiện trong HTML5, là một kỹ thuật Reverse Ajax. WebSockets cho phép các kênh giao tiếp song song hai chiều và hiện đã được hỗ trợ trong nhiều trình duyệt (Firefox, Google Chrome và Safari). Kết nối được mở thông qua một HTTP request (yêu cầu HTTP), được gọi là liên kết WebSockets với những header đặc biệt. Kết nối được duy trì để bạn có thể viết và nhận dữ liệu bằng JavaScript như khi bạn đang sử dụng một TCP socket đơn thuần.

· Dữ liệu truyền tải thông qua giao thức HTTP (thường dùng với kĩ thuật Ajax) chứa nhiều dữ liệu không cần thiết trong phần header. Một header request/response của HTTP có kích thước khoảng 871 byte, trong khi với WebSocket, kích thước này chỉ là 2 byte (sau khi đã kết nối). Vậy giả sử bạn làm một ứng dụng game có thể tới 10,000 người chơi đăng nhập cùng lúc, và mỗi giây họ sẽ gửi/nhận dữ liệu từ server. Hãy so sánh lượng dữ liệu header mà giao thức HTTP và WebSocket trong mỗi giây:

· HTTP: 871 x 10,000 = 8,710,000 bytes = 69,680,000 bits per second (66 Mbps)

· WebSocket: 2 x 10,000 = 20,000 bytes = 160,000 bits per second (0.153 Kbps) Như bạn thấy chỉ riêng phần header thôi cũng đã chiếm một phần lưu lượng đáng kể với giao thức HTTP truyền thống.

Ưu điểm:

· WebSockets cung cấp khả năng giao tiếp hai chiều mạnh mẽ, có độ trễ thấp và dễ xử lý lỗi. Không cần phải có nhiều kết nối như phương pháp Comet long-polling và cũng không có những nhược điểm như Comet streaming.

· API cũng rất dễ sử dụng trực tiếp mà không cần bất kỳ các tầng bổ sung nào, so với Comet, thường đòi hỏi một thư viện tốt để xử lý kết nối lại, thời gian chờ timeout, các Ajax request (yêu cầu Ajax), các tin báo nhận và các dạng truyền tải tùy chọn khác nhau (Ajax long-polling và jsonp polling).

Nhược điểm:

· Nó là một đặc tả mới của HTML5, nên nó vẫn chưa được tất cả các trình duyệt hỗ trợ.

· Không có phạm vi yêu cầu nào. Do WebSocket là một TCP socket chứ không phải là HTTP request, nên không dễ sử dụng các dịch vụ có phạm vi-yêu cầu, như SessionInViewFilter của Hibernate. Hibernate là một framework kinh điển cung cấp một bộ lọc xung quanh một HTTP request. Khi bắt đầu một request, nó sẽ thiết lập một contest (chứa các transaction và liên kết JDBC) được ràng buộc với luồng request. Khi request đó kết thúc, bộ lọc hủy bỏ contest này.

2.3.2 SocketIO

Socket.IO là một thư viện JavaScript cho các ứng dụng web thời gian thực . Nó cho phép giao tiếp hai chiều thời gian thực giữa máy khách và máy chủ web. Nó có hai phần: một client-side thư viện mà chạy trong trình duyệt , và một server-side thư viện cho Node.js . Cả hai thành phần có một API gần như giống hệt nhau 

Socket.IO chủ yếu sử dụng giao thức WebSocket với việc bỏ phiếu làm tùy chọn dự phòng, trong khi cung cấp cùng một giao diện. Mặc dù nó có thể được sử dụng như một trình bao bọc cho WebSocket, nhưng nó cung cấp nhiều tính năng hơn, bao gồm phát đến nhiều ổ cắm, lưu trữ dữ liệu được liên kết với từng máy khách và I/O không đồng bộ.

Socket.IO cung cấp khả năng triển khai các phân tích thời gian thực, phát trực tuyến nhị phân, nhắn tin tức thời và cộng tác tài liệu. Người dùng đáng chú ý bao gồm Microsoft Office , Yammer và Zendesk .

Socket.IO xử lý kết nối trong suốt. Nó sẽ tự động nâng cấp lên WebSocket nếu có thể. Điều này đòi hỏi lập trình viên chỉ có kiến thức về Socket.IO.

Hình 4: Mô hình hoạt động của SocketIO

Cấu trúc của một ứng dụng realtime sư dụng socket bao gồm 2 phần: Server và Client

· Phía server Đây là nơi sẽ cài đặt socket io. Ngôn ngữ để dựng server có thể là php, asp.net, nodejs,… Tuy nhiên, tùy vào ngôn ngữ lựa chọn mà cách cấu trúc server khác nhau. Ở đây, nếu được thì khuyến khích sử dụng nodejs để dựng server, vì như vậy có thể cài trực tiếp socketio vào cùng một server.

· Phía client: Ở phía client sẽ xây dựng giao diện người dùng.

2.4 Ngôn ngữ lập trình và hệ cơ sở dữ liệu sử dụng trong dự án

2.4.1 NodeJS

Node.js là một hệ thống phần mềm được thiết kế để viết các ứng dụng Internet có khả năng mở rộng, đặc biệt là máy chủ web. Chương trình được viết bằng JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhập/xuất không đồng bộ để tối tiểu tổng chi phí và tối đại khả năng mở rộng Node.js bao gồm có V8 JavaScript engine của Google, libUV, và vài thư viện khác.

V8 engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt Chrome, Opera và Vivaldi. Nó được thiết kế tập trung vào hiệu năng và chịu trách nhiệm cho việc dịch mã JavaScript sang mã máy để máy tính có thể hiểu và chạy được. Nhưng bạn cũng nên tránh nhầm lẫn rằng Node chạy trên trình duyệt. Cha đẻ của Node dựa trên V8 engine, cải tiến một số tính năng chẳng hạn file system API, thư viện HTTP và một số phương thức liên quan đến hệ điều hành. Điều đó có nghĩa là Node.js là một chương trình giúp ta có thể chạy code JavaScript trên máy tính, nói cách khác nó là một JavaScript runtime.

Ưu điểm:

· Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá thông dụng.

· Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event-driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả.

· Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn nữa cộng đồng NodeJS rất lớn và hoàn toàn miễn phí. Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị

2.4.2 Swift

Swift là một ngôn ngữ lập trình dành cho việc phát triển các ứng dụng iOS và OS X. Ngôn ngữ lập trình Swift được phát triển dựa trên cấu trúc của C và Objective-C.

Swift được thiết kế để làm việc với Cocoa và Cocoa Touch. Swift khắc phục một số điểm yếu của Objective-C giúp xây dựng ứng dụng nhẹ, nhanh và hiệu năng xử lý tốt hơn.

Ưu điểm:

· Swift là mã nguồn mở.

· Swift giúp phát triển các ứng dụng iOS và macOS.

· Swift nhằm thay thế cho các ngôn ngữ dựa trên C (C, C ++ và Objective-C) giúp xây dựng ứng dụng nhẹ, nhanh và hiệu năng xử lý tốt hơn.

· Swift xây dựng dựa trên C và Objective-C nên nếu đã từng học qua một trong hai ngôn ngữ này sẽ dễ dàng tiếp cận.

· Swift với cú pháp đơn giản, dễ hiểu giúp phát triển ứng dụng nhanh và dễ dàng hơn.

· Swift sử dụng các mẫu lập trình an toàn hơn

· Swift tương thích với Cocoa và Cocoa Touch.

2.4.3 MongoDB

MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. Là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.

Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng

So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS.

Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.

Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB.

Ưu điểm:

· Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.

· Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.

· MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:

· Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.

· Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.

· Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.

Chương 3:TỔNG QUAN DỰ ÁN3.1 Tổng quan về các ngôn ngữ đã đực sử dụng trong dự án:3.1.1 UX/UI:

· Swift

· SwiftJSON framework

· Alamofire framework

3.1.2 Back-end:

· NodeJS framework

· Socket.IO

3.1.3 Hệ quản trị cơ sở dữ liệu:

· MongoDB (Cloud)

3.2 Các chức năng của ứng dụng:3.2.1 Các chức năng chính:

· Đăng ký

· Đăng nhập

· Tìm kiếm và kết bạn

· Tạo cuộc trò chuyện nhóm

· Trò chuyện giữa hai cá nhân

3.2.2 Điểm mạnh:

· Sử dụng server NodeJS để tạo nên các API cho tốc độ truy cập và xử lý nhanh

· Sử dụng hệ quản trị cơ sở dữ liệu MongoDB cho tốc độ truy suất nhanh, dữ liệu lưu trữ đa dạng (hình ảnh, tệp…)

· Xử lý real-time (thời gian thực) tất cả thao tác

3.2.3 Hạn chế tồn tại:

Các chức năng chỉ dừng lại ở mức cơ bản, và tồn tại một số hạn chế nhất định:

· Chưa có đăng nhập sử dụng tài khoản Google hoặc Facebook

· Chưa có chức năng khôi phục mật khẩu

· Chưa có trò chuyện video

3.3 Mô tả chức năng:

· Sau khi đăng ký và đăng nhập, người dùng sẽ truy cập vào giao diện sử dụng chính. Tại đây người dùng có thể nhìn thấy toàn bộ tin nhắc trò chuyện với những người bạn đã kết bạn.

· Sau khi đăng nhập người dụng muốn kết bạn sẽ qua ở tab thứ hai của ứng dụng đây là danh sách các người dùng đã nằm trong danh sách bạn bè hoặc là danh sách chờ kết bạn.

· Khi chấp nhận một lời mới kết bạn thì hệ thống sẽ đưa ra tin nhắn đầu tiên và hai người có thể trò chuyện với nhau

· Nếu muốn tạo trò chuyện nhóm người dùng truy cập vào phần tạo nhóm mới. Chọn các thành viên trong nhóm trò chuyện và tên của nhóm trò chuyện. Sau đó tạo trò chuyện mới. Và gửi tin nhắn trong nhóm với nhau như trò chuyện giữa hai người dùng.

Chương 4:KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN3.1 Kết quả:3.1.3 Giao diện:

a. Form đăng nhập:

Hình 5: Giao diện đăng nhập

b. Form đăng ký:

Hình 6: Giao diện đăng ký người dùng

c. Giao diện trang chủ:

Hình 7: Giao diện trang chủ

d. Tìm kiếm bạn bè

Hình 8: Giao diện tìm kiếm bạn bè

e. Trò chuyện cá nhận:

Hình 9: Giao diện trò chuyện cá nhân

f. Trò chuyện nhóm:

3.2 Hướng phát triển:

· Thêm chắc năng trò chuyện bằng video: Sử dụng WebRTC để thực hiện trò chuyện video.

· Thêm tính năng trò chuyện nhóm

· Cải thiện tóc độ, chỉnh sửa lỗi

· Triển khai ứng dụng lên môi trường internet thực tế: Dự kiến sẽ dùng máy chủ Heroku

API ChatApp sử dụng SokcketIO và SwiftUITrang 28