2009-06-26 36 views
5

Khá nhiều điều ngược lại với việc đẩy phía máy chủ, còn được gọi là Comet. Tôi tự hỏi nếu nó có thể sử dụng các kết nối HTTP sống lâu để đẩy thông tin đến máy chủ.Có thể thực hiện đẩy HTTP phía máy khách không?

Không giống như một XHR đơn giản, kết nối sẽ được giữ sống và dữ liệu sẽ được chuyển tiếp tới server theo chu kỳ, như là người dùng hoàn thành hành động, vv

Sử dụng công nghệ tiêu chuẩn tôi không tin rằng điều này là có thể, nhưng Tôi đang mở để gợi ý về khai thác có thể hoặc những cách khéo léo để hoàn thành điều này. Mục đích là để hoàn thành dữ liệu độ trễ thấp đẩy tới máy chủ để phát trực tuyến một chiều nhanh và hiệu quả.

Tôi không quan tâm đến việc triển khai socket bằng flash/java bridge vì sự phức tạp trong việc phân phối các chính sách miền chéo hoặc nhận được java đã ký. Hacks thô mà làm việc mà không có phụ thuộc bổ sung được chào đón. Tốt hơn là giải pháp sẽ được thực hiện với javascript.

+0

Không có nhiều lý do cho việc này. Vì HTTP1.1 sử dụng lại các kết nối, khi kết nối đầu tiên được thiết lập, các kết nối tiếp theo cực kỳ nhanh; kỹ thuật AJAX chuẩn giải quyết vấn đề này mà không có bất kỳ loại vấn đề nào liên quan đến việc duy trì kết nối lâu dài trên máy chủ, xử lý lỗi kết nối, v.v. – jvenema

Trả lời

1

một lần tôi thấy một cuộc nói chuyện của anh chàng đằng sau http://orbited.org/

Đó là một thư viện js đó sử dụng công nghệ tiêu chuẩn để giữ một kết nối mở giữa máy chủ và máy khách, bạn có thể đẩy thứ xuống.

+0

Chắc chắn dọc theo dòng của những gì tôi đang tìm kiếm, mặc dù sẽ tốt hơn nếu nó hoạt động trên cổng chuẩn 80. –

+0

Đó là một kết nối trừu tượng, có thể kết thúc bằng cách sử dụng nhiều yêu cầu HTTP (nhiều như một cho mỗi thư). Nhưng nó có thể được chạy trên cổng 80 (chỉ cần không, tất nhiên, trên cùng một IP như một máy chủ web). – Miles

1

này có thể được thực hiện trong một trong một số cách ...

Bạn có thể keep a connection open và làm POST, hoặc tôi chắc chắn chúng ta có thể làm một POST đa phần.

+0

Không, chắc chắn không giống nhau theo bất kỳ cách nào. –

+0

Câu hỏi đặt ra là gửi một số dữ liệu, sau đó gửi một số dữ liệu khác mà không cần bắt đầu một yêu cầu HTTP mới - tức là. không chỉ POST bình thường. –

+0

bạn có thể giữ kết nối mở mặc dù và có thể thực hiện yêu cầu GET nhiều phần không? Một trong hai kịch bản đó sẽ hoạt động tốt. – Nippysaurus

1

này làm nó: http://www.speich.net/projects/programming/firebug-testing.php

và xem xét điều này: http://en.wikipedia.org/wiki/Comet_(programming)) và google xung quanh cho 'x-hỗn hợp thay thế'

Do XHR của bạn trên Firefox. Phải sử dụng trực tiếp hoặc lấy đối tượng XHR để đặt trường vui nhộn. xhr.multipart = true và sử dụng trình xử lý onload, không phải onreadystatechange.

Máy chủ sẽ trả về dữ liệu có loại mime 'multipart/x-mixed-replace'. cộng với dấu phân tách nhiều phần. tuôn ra để lấy các byte cuối cùng cho mỗi salvo. Tôi vẫn cố gắng làm cho nó mượt mà.

Safari (~ = chrome) có thể thực hiện nhưng các thông số khác nhau. Gọi trình xử lý của bạn khi readyState = 3, không phải 4. Và mỗi lần văn bản mới được thêm vào resultText, không phải tất cả một mình. Không thể nhận được bất cứ điều gì để làm việc trên IE.

0

Nếu bạn đang tìm kiếm thông tin liên lạc giữa trình duyệt-máy chủ hai chiều, có thể bạn đang tìm kiếm WebSockets. Xem ở cuối bài viết trên Wikipedia để biết cách triển khai có sẵn.

+0

Cảm ơn :) Đây là 3 năm trước, ổ cắm không được gần như xa như họ ngày nay. –

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