2013-04-29 33 views
10

Tôi đang chạy SocketIO trên NodeJS và tôi không quan tâm nhiều đến việc hỗ trợ trình duyệt rộng vì đó là dự án thú cưng của tôi, nơi tôi muốn sử dụng tất cả sức mạnh của công nghệ mới để dễ dàng phát triển. Mối quan tâm của tôi là về cách tôi nên gửi một lượng lớn dữ liệu JSON từ máy chủ đến máy khách và ngược lại. Vâng, những số tiền này không lớn như có thể cho dữ liệu nhị phân video hoặc hình ảnh, tôi cho rằng không lớn hơn hàng trăm kilobyte theo yêu cầu.WebSockets vs XHR cho số lượng lớn dữ liệu

Hai kịch bản tôi thấy là:

  1. Gửi thông báo qua WebSockets từ máy chủ cho khách hàng rằng một số dữ liệu cần được lấy. Sau đó, mã máy khách chạy một yêu cầu XHR thông thường đến máy chủ và nhận một số dữ liệu thông qua XHR.
  2. Gửi toàn bộ tập dữ liệu qua WebSockets từ máy chủ đến máy khách. Trong trường hợp này, tôi không cần phải chạy bất kỳ yêu cầu bổ sung nào - tôi chỉ nhận được tất cả dữ liệu qua WebSockets.

Tôi thấy trường hợp đầu tiên trong Meteor.js, vì vậy tôi tự hỏi lý do của nó. Hãy chia sẻ ý kiến ​​của bạn.

+2

có thể điều này sẽ giúp http://stackoverflow.com/questions/13010354/chunking-websocket-transmission – jAndy

Trả lời

5

Ổ cắm web phải hỗ trợ bộ dữ liệu lớn (tối đa 16 exabyte trong lý thuyết ), do đó, từ quan điểm đó nó sẽ hoạt động tốt. Lợi thế của XHR là bạn sẽ có thể quan sát tiến độ theo thời gian và nói chung được kiểm tra tốt hơn cho các khối dữ liệu lớn. Ví dụ, tôi đã thấy việc triển khai máy chủ websocket (suy nghĩ ngược) sẽ không xử lý tốt dữ liệu lớn, bởi vì chúng sẽ tải toàn bộ dữ liệu vào bộ nhớ (thay vì truyền dữ liệu), nhưng đó không phải là trường hợp cần thiết cho socket. io (dunno) Điểm trong trường hợp: dùng thử với socket.io trong khi quan sát việc sử dụng bộ nhớ và độ ổn định. Nếu nó hoạt động, chắc chắn đi với websockets, bởi vì lâu dài sự hỗ trợ cho các gói dữ liệu lớn sẽ chỉ nhận được tốt hơn và chắc chắn không tồi tệ hơn. Nếu hóa ra là không ổn định hoặc nếu socket.io không thể truyền tệp dữ liệu lớn hơn, thì hãy sử dụng cấu trúc XHR.

Btw, chỉ cần tìm kiếm trên google được bật lên siofile, chưa xem xét nhiều lắm, nhưng đó có thể chỉ là thứ bạn cần.

+0

Cảm ơn. Đối với những gì giá trị của nó tôi hy vọng điều này là chính xác. – zallarak

+0

Bạn nên thử và liên lạc với Sergey cho dù anh ấy đã thực hiện một số phép đo/thử, nếu anh ta làm điều đó sẽ là thông tin rất có giá trị ;-) Tất cả tôi có thể chia sẻ là lý thuyết và một dự án github có liên quan. –

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