2013-11-03 17 views
5

Tôi đang phát triển ứng dụng hiển thị dữ liệu thời gian thực (biểu đồ, v.v.) từ Redis. Dữ liệu cập nhật đến Redis rất nhanh (mili giây). Vì vậy, nó sẽ có ý nghĩa để hiển thị cập nhật thường xuyên nhất có thể (miễn là mắt người có thể nhận thấy nó).Thời gian thực với Node.js: WebSocket + Bỏ phiếu phía máy chủ so với bỏ phiếu phía máy khách

nghệ stack:

  • Node.js như một máy chủ web
  • Redis chứa dữ liệu
  • Javascript/HTML (AngularJS) như là một khách hàng

Ngay bây giờ tôi có kiểm tra phía máy khách (yêu cầu GET tới máy chủ Node.js mỗi giây để truy vấn Redis để cập nhật).

Có lợi thế nào khi thực hiện bỏ phiếu phía máy chủ thay vào đó và hiển thị cập nhật thông qua WebSocket? Mỗi kết nối WebSocket sẽ yêu cầu cuộc thăm dò Node.js riêng biệt (setInterval) mặc dù các truy vấn của khách hàng có thể khác nhau. Nhưng nó không được mong đợi có hơn 100 kết nối WebSocket.

Bất kỳ ưu điểm/khuyết điểm nào giữa hai cách tiếp cận này?

Trả lời

5

Nếu tôi hiểu câu hỏi của bạn một cách chính xác: bạn có ít hơn 100 người dùng sẽ sử dụng tài nguyên của bạn cùng một lúc, và bạn muốn tìm hiểu những gì có thể là một cách tốt hơn để cung cấp cho họ thông tin cập nhật:

  • khách hàng yêu cầu cập nhật thông qua yêu cầu hết thời gian (1 giây)
  • máy chủ theo dõi khách hàng và bất cứ khi nào có bản cập nhật, nó sẽ cập nhật cho họ.

Tôi nghĩ giải pháp tốt nhất tùy thuộc vào dữ liệu bạn có và mức độ quan trọng của người dùng khi nhận dữ liệu này.

tôi sẽ đi với client-side nếu:

  • mọi người không quan tâm nếu dữ liệu của họ là một chút cũ
  • sẽ có khoảng hơn sau đó 1 bản cập nhật trong thời gian này 1 giây
  • tôi không có thời gian để thay đổi mã

tôi sẽ đi với server-side nếu:

  • điều quan trọng là có dữ liệu cập nhật và người dùng không thể chịu đựng được các thông tin
  • không thường xuyên (ví dụ: chúng tôi chỉ cập nhật một lần mỗi phút, chỉ có 1 trong 60 yêu cầu phía khách hàng sẽ hữu ích. Và ở đây máy chủ sẽ chỉ phát hành một bản cập nhật)

Một điều tốt là node.js đã có thư viện xuất sắc socket.io cho mục đích này.

+1

Cảm ơn bạn đã trả lời. Đây là ứng dụng thời gian thực và luôn có bản cập nhật. Dữ liệu cập nhật đến Redis rất nhanh (mili giây). Vì vậy, nó sẽ có ý nghĩa để hiển thị cập nhật thường xuyên nhất có thể (miễn là mắt người có thể nhận thấy nó). – webdev

+0

Câu trả lời này phải được chấp nhận. – Chev

+0

Xong. Cảm ơn câu trả lời tuyệt vời. – webdev

Các vấn đề liên quan