Hướng dẫn nodejs chat - trò chuyện nodejs
Xin chào các bạn, trong bài viết hôm nay chúng ta sẽ cùng tìm hiểu về cách tạo 1 ứng dụng chat đơn giản viết bằng framework nodejs tích hợp thư viện socket.io nhé. Show 1. Ý tưởng ứng dụngÝ tưởng là tạo một ứng dụng chat cho nhiều người. Tin nhắn được hiển thị luôn chứ không phải load lại trang mới hiển thị ra được. Để đơn giản thì chúng ta sẽ không xây dựng phần xác thực, cũng như chú trọng đến giao diện, mà thay vào đó chúng ta sẽ xoay quanh các sử dụng thư viện socket.io cũng như tạp ra 1 ứng dụng chat gọi là chạy đc thôi nhé :v 2. Khởi tạo project2.1 Tạo thư mục và cài đặt ExpressTạo thư mục bằng terminal và di chuyển tới đó:
Chúng ta cần 1 server cho ứng dụng chat và framework cho 1 được chọn đó là 2. các bạn chạy lệnh sau để cài 2 vào project nhé.
Để kiểm tra đã cài đặt thành công hay chưa thì chúng ta vào file 4 nhé. Nếu có thông tin của 2 trong file thì nó đã được cài thành công rồi.
Bước tiếp theo là khởi tại file 6 để tiến hành phát triển ứng dụng của chúng ta. File chính là bộ não của app chat, bao gồm các xử lý resquest, response, lưu vào database,...
2.2 Tạo view index.htmlSau đó tạo 1 file view là 7 cho app chat, trong file view mình có dùng các CDN Bootstraps.
2.3 NodemonChúng ta nên sử dụng gói 8 để không phải reset lại server mỗi khi thay đổi code. 9 để start nodemon trong terminal ta chỉ cần: 0 nếu chạy trên 1 mà ra view như hình dưới thì chúng ta đã start server và tạo view thành công cho app chat rồi đó . . 2.4 MongooseSau khi tạo view thành công, bước tiếp theo đó là tạo connect tới 2 và gói mà tôi hướng tới đó là 3.
Khai báo thư viện vào file 6
mình sẽ dùng mongo trên máy local luôn, thay vì bài hướng nhiều hướng dẫn khác hay dùng mlab.com. đầu tiên chúng ta tiến hành tạp 1 database mongo đã nhé. Đăng nhập vào Mongo bằng cách
tạo project: 5 nếu như project có sẵn rồi thì nó sẽ connect tới db là app_chat còn không thì nó sẽ tạo 1 database và connect. Trở lại với project thì ta sẽ tiến hành tạo connect từ app.
và định nghĩa 1 model để ánh xạ từ collection messages ở mongodb ra. 2.5Body-Parser
Thêm đoạn sau vào để cài đặt thư viện body-parser. 0==> ok vậy là bước chuẩn bị đã xong, bước tiếp theo là chúng ta sẽ tiến hành xây dựng logic cho app. 3. Xây dựng logic cho web chat3.1 Xây dựng routerchúng ta sẽ định nghĩa 3 router trong app này. đó là get và post: Đường dẫn mặc định(cái này đã có ở trên rồi): 1get: tức là khi có request tới 6 có method là 7 thì sẽ load hết tất cả tin nhắn từ mongoDB ra(mình làm đơn giản vậy thôi nhá :v ) 2post: Tương tự thì chúng ta có 8 tạo 1 bản ghi và ghi mới vào database. 3ở ngoài file view index.html chúng ta cần thêm 1 số xử lý javascript để gửi dữ liệu và request về server. 4Mình xin gải thích 1 chút về đoạn js, thực ra nó cũng dễ hiểu thôi: + khi có sự kiện click vào button submit với id là send thì tiến hành gửi request kiểu post thông qua sendMessage() để tới server lưu lại bản ghi. + hàm getMessages() chỉ là hàm request yêu cầu server trả về dữ liệu của bảng thôi. ==> ok bây giờ các bạn trở lại và reset lại trang thì đã có thể thấy hiển thị dữ liệu chat rồi đó, bạn có thể gửi tin nhắn được rồi, tuy nhiên nó chưa hiện real time như mong muốn được, vì vậy chúng ta tiếp tục xử lý ở bước sau nhé. 3.2 Socket.io3.2.1 Socket.io là gì 9 là 1 thư viện javascript dành cho ứng dựng web realtime. nó cho phép giao tiếp realtime giữa 0 và 1. Nó bao gồm 2 phần đó là thư viện phía client và thư viện phía server. Hay nói cách khác đó là để sử dụng được socket.io cho app web ta cần phải có socket.io ở cả view và server.3.2.2 Cài đặt và sử dụng 5Phía view: 6Import thư viện vào app: tại server: 7tại view: 8tạo connect: 9thêm dòng sau vào file 6 vào middlewave 3 4 Hiện tại khi click submit thì tin nhắn mới chưa hiển thị lên luôn được, vì vậy ta cần thêm đoạn sau vào phần script của file index.html 04. GithubCác bạn có thể tại source code về tham khảo tại đây tại đây nhé 5. Kết luậnok như vậy là mình và các bạn đã xây dựng xong 1 app chat đơn giản nhất, giờ các bạn có thể sử dụng và phát triển tiếp ứng dụng thêm nhé. Cảm ơn các bạn đã đọc bài viết của mình. |