Tôi hiện đang làm việc trong một dự án Ruby on Rails hiển thị danh sách các hình ảnh.
Một điều bắt buộc đối với dự án này là nó hiển thị các bài đăng mới trong thời gian thực mà không cần phải làm mới trang web. Sau khi tìm kiếm một lúc, tôi tình cờ thấy một số giải pháp và dịch vụ JavaScript như PubNub; tuy nhiên, không có giải pháp nào được cung cấp có ý nghĩa cả.
Trong giải pháp JavaScript ( bỏ phiếu ), điều sau đây xảy ra:
- Người dùng 1 xem danh sách ảnh.
- Trong nền, mã JavaScript đang bỏ phiếu một điểm cuối mỗi giây để xem có bài đăng mới nào không.
- Người dùng 2 thêm một ảnh mới.
- Có độ trễ 50 ms trước khi chu kỳ mới được kích hoạt và tìm nạp dữ liệu mới.
- Nội dung mới được tải trong DOM .
Điều này có vẻ kỳ lạ khi được dịch sang một ví dụ thực tế:
- Người dùng 1 giữ một đống hình ảnh trên bàn của anh ấy / cô ấy.
- Anh ấy / cô ấy đi đến nhiếp ảnh gia mỗi giây và hỏi nếu anh ấy có một cái mới.
- Nhiếp ảnh gia thực hiện một bức ảnh mới.
- Lần thứ hai này khi anh ấy / cô ấy bước vào, cô ấy có thể chụp ảnh và đặt nó lên đống.
Theo tôi, giải pháp nên như sau:
- Người dùng 1 giữ một đống hình ảnh trên bàn của anh ấy / cô ấy.
- Nhiếp ảnh gia chụp một bức ảnh mới.
- Các nhiếp ảnh gia đi đến đống và đặt nó với phần còn lại.
Giải pháp PubNub về cơ bản là giống nhau, tuy nhiên lần này có một thực tập sinh giữa các bên để chia sẻ dữ liệu.
Không cần phải nói, cả hai giải pháp đều rất tiêu tốn năng lượng vì chúng được kích hoạt ngay cả khi không có dữ liệu để tải.
Theo như kiến thức của tôi, không có lời giải thích (logic) tại sao cách thực hiện này được sử dụng trong hầu hết mọi ứng dụng thời gian thực.