2012-01-17 23 views
8

Tôi đang xây dựng một tìm kiếm động (cập nhật với mọi phím tắt): sơ đồ hiện tại của tôi là, tại mỗi lần gõ phím, gửi một yêu cầu AJAX mới đến máy chủ và lấy lại dữ liệu trong JSON.WebSockets: hữu ích cho việc giảm chi phí?

Tôi đã xem xét việc mở một WebSocket cho mọi tìm kiếm "phiên" để tiết kiệm một số chi phí. Tôi biết rằng điều này sẽ tiết kiệm thời gian, nhưng câu hỏi là, nó thực sự đáng giá, xem xét các thông số đó: Thời gian ping trung bình 80ms 166ms: thời gian giữa mỗi lần nhấn phím, giả sử người dùng tương đối nhanh Tỷ lệ chuyển trường hợp xấu nhất của 1MB/s, với mỗi gói dữ liệu phải được nhận trên mỗi lần nhấn phím không quá 1KB. Ứng dụng này cũng mất khoảng 30-40ms để kết nối tìm kiếm với DOM.

Tôi thấy điều này: HTTP vs Websockets with respect to overhead, nhưng đó là trường hợp sử dụng khác.

Websockets có giảm bất kỳ thứ gì ngoài chi phí HTTP thuần túy không? Chi phí trên HTTP (giả sử không có cookie và tiêu đề tối thiểu) là bao nhiêu?

Tôi đoán rằng yêu cầu HTTP mở một ổ cắm mạng mới trên mỗi yêu cầu, trong khi WebSocket cho phép chúng tôi chỉ sử dụng một lần. Nếu sự hiểu biết của tôi là chính xác, chi phí thực tế của việc mở một ổ cắm mạng mới là gì?

+3

WebSockets có giá trị nó khi máy chủ đẩy thông điệp đến khách hàng – Raynos

+0

tôi đã thực hiện một điều tương tự trước và thấy rằng để làm cho nó nhanh hơn bạn có thể muốn trì hoãn yêu cầu Ajax cho một vài ms sau đó hủy bỏ nó nếu người dùng gõ một khóa khác. Sau đó, nếu người dùng nhập nhanh, bạn thực hiện một yêu cầu thay vì nhiều yêu cầu. (mặc dù điều đó không thực sự trả lời bạn câu hỏi trên websockets!) –

+0

Đó là những gì tôi đang làm ngay bây giờ. Nó hoạt động hoàn hảo, nhưng tôi lo ngại rằng khi tôi triển khai nó, ứng dụng có thể bắt đầu gặp khó khăn trong thời gian ping chậm hơn. Xem ứng dụng thực tế: http://77.70.33.151:8233/ Bạn có thể tìm kiếm nội dung như "firefox", "crom" hoặc "mozilla". – Ivo

Trả lời

3

Có vẻ như WebSockets cung cấp hiệu suất tốt hơn trong các tình huống như của bạn.

Web Socked

  • bắt tay nhỏ tiêu đề
  • truyền full duplex sau cái bắt tay.
  • Sau khi kết nối được thiết lập, chỉ có 2 byte được thêm vào mỗi truyền request/response

Http

  • Http header được gửi cùng với mỗi yêu cầu

Trên Mặt khác, WebSocket là một công nghệ tương đối mới. Nó sẽ là khôn ngoan để điều tra trình duyệt web hỗ trợ tiềm năng các vấn đề liên quan đến mạng.

Ref:

http://websocket.org/quantum.html

http://www.youtube.com/watch?v=Z897fkPn7Rw

http://en.wikipedia.org/wiki/WebSocket#Browser_support

+0

Cảm ơn, video đã trả lời cụ thể câu hỏi của tôi (chi phí thuần túy của HTTP). Đối với hỗ trợ trình duyệt, không khó để triển khai cơ chế dự phòng hoặc sử dụng thư viện thực hiện cho bạn (ví dụ: socket.io). – Ivo

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