Máy chủ websocket nodejs
Ổ cắm. io là một thư viện trợ giúp thời gian thực giúp chúng ta có thể giao tiếp 2 chiều giữa máy khách (trình duyệt) và máy chủ Các bạn nhìn hình ở trên thì để connect giữa client và server (ở đây là mình dùng server nodejs) thì chúng ta sẽ sử dụng socket. io as after.
Chú thích. ở bài này mình chỉ giải trí cho những hiểu biết rõ ràng về luồng hoạt động hơn là vì viết kiểu code để kết nối đến server thì client sẽ dùng gì hay tạo server websocket bằng node js thì sẽ phải làm như thế nào. Mình nghĩ khi các bạn đã hiểu stream hoạt động cũng như cách thiết kế 1 ứng dụng cụ thể thì các bạn mới code dễ dàng hơn thay vì cắm đầu code cũng chạy đấy nhưng stream lại k hiểu và đôi lúc lại xoắn đầu hỏi tại . @@ Tính năng cơ bản của Socket io1. Giao tiếp giữa máy khách và máy chủ
Đặc biệt giao tiếp này là cả 2 chiều client có khả năng phát (emit) và lắng nghe (on) sự kiện từ phía server gửi về và quay ngược lại 2. Các cách phát (phát) dữ liệu
– Tự phát ra. Tức là 1 client gửi 1 tin nhắn lên server thì server sẽ chỉ phát lại cho chính client đó thôi – Phát sóng. Tức là 1 client gửi 1 tin nhắn lên server thì server sẽ phát lại cho tất cả các client khác cùng kết nối đến server (socket2 , socket 3 đều nhận được) – Phòng phát ra. Tức là 1 client gửi 1 tin nhắn lên server thì server sẽ chỉ phát lại các phòng đã được định sẵn (như hình dưới đây socker2 và socket 3 nhóm 1 lại 1 phòng) – SocketId phát ra. Tức là 1 client gửi 1 tin nhắn lên server thì server sẽ chỉ phát lại cho riêng 1 client nào đó (kiểu chat riêng giữa 2 người đó) Để hiểu sâu hơn cũng như xem mã nó như thế nào thì các bạn có thể vào https. //ổ cắm. io/docs/v3/broadcasting-events/ để khám phá kỹ năng tốt hơn Xây dựng mô hình ứng dụng trò chuyện mô hình1. Quy mô nhỏ
2. Quy mô trung bình và lớn Giả sử dụng ứng dụng của chúng tôi chỉ đáp ứng được 10K người yêu cầu cùng 1 lúc , 1 ngày đẹp trời tự nhiên lại có 20k 30k người yêu cầu ứng dụng của chúng tôi khiến máy chủ quá tải và không thể trả lời ứng dụng .
Start with nginx loadbalance Nhìn vào mô hình bên dưới những tưởng tượng của bạn. Các bạn có thể tìm hiểu thêm round robin nginx còn ở đây mình nói gọn là thuật toán này sẽ gửi yêu cầu đến các máy chủ theo thứ tự ví dụ lần. Use redis to application Các bạn hầu như các bạn đều biết đến redis như là 1 bộ nhớ tạm lưu các giá trị key,value mà k biết nó còn có tính năng đặc biệt khác như pus/sub và chính nhờ tính năng này mà nó có thể giúp chúng ta Quán rượu. Xuất bản, có nghĩa là một nhà sản xuất đưa dữ liệu vào một kênh (kênh) hay còn gọi là chủ đề như trong Kafka Hiểu đơn giản giống như các bạn xem cáp truyền hình (ví dụ như SCTV), chúng ta là người tiêu dùng, đăng ký (subscribe) vào các kênh như. VTV1, VTV3, VTV6, HBO, Fox Movies…. Thì SCTV chính là nhà sản xuất, đưa dữ liệu (xuất bản) ra các kênh tương ứng đó và chúng ta chỉ nhận và xem trên TV thôi. Mình k miên man deep về phần này nữa nếu các bạn thích hiểu rõ hơn về redis pub/sub hơn thì có thể vào link dưới đây để đọc và cũng thử test xem tính năng thần thánh này của redis nhé https. //codingpearls. com/lap-trinh-web/laravel-5-x-tips/redis-pubsub-co-che-hoat-dong-cai-dat-tren-windows. html Oke vậy là ta có thể dùng redis để truyền tin nhắn rồi. Nhưng các bạn có thắc mắc là ví dụ tôi không dùng redis mà dùng cách loadbalance như ở trên thôi hay có thể dùng pusher chả hạn được k |