Tiếp tục thắc mắc về realtime
Hi guys! Mình là Phú, không biết mọi người còn nhớ mình người lần trước hỏi về kỹ thuật long-polling hay không . Sau vụ giải đáp thắc mắc đó, mình có triển khai lên host free để test và nhận ra nó hoạt động không được tốt cho lắm. Host lại không cho nhiều connection (max_connection = 3) nên khi mình chạy 2 cửa sổ bị error ngày . Mình không build nó nữa. Cho đến hôm nay - ngày mình tình cờ đọc về Server-sent Events [SSE] của html5. Rồi lấy dùng thử. Tạo demo khác để test thôi thì khá ổn. Nhưng có một điều sau khoảng 3s chờ thì client mới có request và nhận dữ liệu mới. Đọc một hồi nữa thì biết nó chỉ nhận được message từ phía server, không giống như socket có thể tạo ra 2 kênh liên lạc với nhau.
Tiếp tục tìm socket, từ khóa của mình là “how to build realtime app html5”, " how to build realtime app js" => Toàn thấy ra framework build sẵn với pusher Nếu không có hướng dẫn build bằng js hay html5 thì realtime của 1 số trang web họ sử dụng công nghệ gì? Mình lấy ví dụ facebook, theo mình được biết nó được viết bằng php (facebook tạo ra hack dựa trên php) thì họ tích hợp công nghệ realtime nào. Đọc tài liệu thấy php không hỗ trợ realtime và muốn realtime phải thêm 1 phần mở rộng gì gì đó.
Để mình tóm tắt
- realtime của 1 số trang web họ sử dụng công nghệ gì?
- php muốn tích hợp realtime như thế nào?
- build 1 ứng dụng realtime có khó không?
Mình đang cảm thấy php nó yếu kém nhiều so với node.js anh em đừng chỉ mình học node.js nhá
Thank for reading.
Theo như mình biết thì tùy mức độ mà bạn gọi là realtime nó ntn. Nếu request thấp thì dùng angularjs… để request ajax, cảm giác nhanh hơn, tiện hơn ajax thôi. Thực sự realtime thì dùng socket. Bạn tìm thư viện hỗ trợ socket của php để backend, frontend thì dùng html5 nếu là web.
Facebook đã từng dùng socket, lần cuối mình xem thì họ đã chuyển về ajax, h thì ko rõ.
Mình muốn đề cập đến vấn đề realtime đấy. Mình không nghĩ đến mức độ hay gì, khái niệm realtime của mình là “thời gian thực” nghĩa là khi người ta nhắn tin thì bên mình cũng nhận được luôn. Mình xem facebook thấy nó cũng giữ request, nhưng có thể chỉ là 1 phần trong hệ thống của nó.
Facebook dùng ajax, liên tục kiểm tra trạng thái người dùng sẽ thành realtime.
Nhưng có vẻ là facebook nó thông minh hơn ở chỗ dựa vào hoạt động của người dùng mà đưa ra tần suất kiểm tra trạng thái phù hợp với từng người, từng thời điểm.
Có bài này về Flux cũng liên quan chút, có thể bạn cần http://kipalog.com/posts/Huong-dan-va-giai-thich-Flux-bang-hinh-ve
Cảm ơn bạn
Cái Flux này nó không liên quan tới vấn đề realtime nhé. Nó chỉ là cách để giữ cho data và UI luôn đồng bộ.
Bạn có thể đọc thêm các kỹ thuật realtime ở đây:
Calavi Kevin 's Web Development Blog – 10 May 14
Giới thiệu kỹ thuật Long-Polling , Websockets, Server-Sent Events, Comet
Hiện nay ứng dụng web đã phát triển khác xa so với ngày đầu nó xuất hiện, kèm theo đó là vô số các kỹ thuật mới được áp dụng để phục vụ cho quá trình này nhằm đem lại trải nghiệm mới mẻ, đầy hứng t…
Tuỳ khái niệm realtime mà bạn định nghĩa cho ứng dụng thôi.
Còn nếu muốn dùng realtime thực sự với PHP, bạn có thể sử dụng ZeroMQ, ReactPHP, … Tuy PHP không native support như NodeJS nhưng hoàn toàn có thể sử dụng event-loop tự viết hoặc thư viện được.
CẢm ơn bạn nhiều nhé! Mình sẽ xem kỹ!