2012-04-09 34 views
7

Tôi đã thiết lập MOD_SPDY trên máy chủ Apache của mình và bây giờ muốn trang bị thêm mã khách hàng để sử dụng triển khai SPDY của Netty để gửi yêu cầu của tôi tới máy chủ qua kênh SPDY.Sử dụng SPDY với Netty

Đây là trải nghiệm đầu tiên của tôi khi sử dụng Netty, vì vậy tôi nghĩ rằng tôi cần phải cấu hình kênh của mình bằng cách nào đó và sau đó gửi yêu cầu thông qua nó. Vấn đề là, có vẻ như không rõ ràng chính xác cách định cấu hình các kênh và thậm chí sau đó, cách theo dõi nhiều yêu cầu HTTP bên trong kênh có thể đang thực thi đồng thời.

Tôi đã googled xung quanh và tìm thấy gói SPDY: http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html

nhưng các tài liệu vẫn còn khá mỏng ở đó. Tôi dường như không tìm thấy bất kỳ ví dụ về việc sử dụng mã, chỉ có thông báo rằng nó tồn tại trong bản phát hành mới nhất.

Có ai có ví dụ về cách xây dựng kênh SPDY và ​​sau đó gửi/theo dõi nhiều yêu cầu và phản hồi thông qua nó? Ngoài ra, chức năng này sẽ hoạt động như thế nào khi máy chủ không hỗ trợ SPDY và ​​kênh này quay trở lại kết nối SSL chuẩn?

+0

Nếu bạn không liên kết với Netty, có thể bạn có thể thử SPDY của Jetty, xem http://webtide.intalio.com/2012/03/spdy-support-in-jetty/ và http://www.smartjava.org/content/how-use-spdy-jetty. – sbordet

+1

@svordet Bill đã có một máy chủ, anh ấy cần một khách hàng. – Slartibartfast

+0

Thực ra, có vẻ như sbordet là chính xác; Jetty cũng có một khách hàng SPDY có thể dễ dàng hơn để làm việc với: http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications –

Trả lời

3

Chỉ ví dụ tôi có thể tìm thấy trên Netty và SPDY là mã kiểm tra cho SessionHandlersocket echo test. Tôi chưa thực hiện điều này nhưng khách hàng của bạn nên tạo đường ống gồm SpdyFrameCodec, SpdySessionHandler và bộ xử lý của bạn.

Trình xử lý của bạn phải được mô hình hóa sau EchoHandler trong thử nghiệm phiên, vì cách đó SpdySessionHandler thực hiện công việc giải mã khung thô thành khung có ý nghĩa hơn và thực hiện một số điều theo yêu cầu của giao thức SPDY.

Đối với mục đích sao lưu, có SpdyHttpCodec trong phiên bản chụp nhanh của Netty dịch từ SPDY sang HTTP. Bằng cách đó, bạn có thể xây dựng trình xử lý ứng dụng khách của mình dưới dạng HTTP và nhận các thông điệp đến thông qua SPDY hoặc HTTP một cách minh bạch. Để thực hiện việc này, bắt buộc phải thực hiện điều gì đó tương tự như ví dụ port unification.

Tất cả những gì đã nói. Có chỗ cho vài lớp/trình xử lý tiện ích để làm cho tất cả điều này trở thành trải nghiệm "ngoài hộp". Tôi muốn làm một ví dụ làm việc, nhưng bây giờ thiếu thời gian cho nó, và sẽ có quá nhiều mã để chỉ cần dán nó ở đây như là câu trả lời.

+0

Ah, vì vậy tôi chỉ yêu cầu nhiều kênh từ nhà máy và dưới mui xe các bộ xử lý SPDY sẽ ghép chúng? Tôi nên thêm các trình xử lý theo thứ tự nào? –

+0

Thật không may là nó không đơn giản, nhưng nó có thể làm cho nó bằng cách sử dụng các lớp học được cung cấp. Tôi muốn tự mình làm công việc này, vì vậy tôi sẽ cố gắng xây dựng mã làm việc sau. – Slartibartfast

2

Không có nhiều ví dụ để sử dụng spdy với cầu tàu. Tôi thường không phải là người quảng cáo không biết xấu hổ, nhưng tôi đã viết ra một ví dụ hoàn chỉnh về cách làm những gì bạn muốn. Tôi đã cấu hình netty để phục vụ spdy khi client hỗ trợ nó và quay trở lại http khi spdy không có sẵn. Bạn có thể tìm thấy mã tại: http://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

Cảm ơn câu trả lời, nhưng tôi đang tìm kiếm điều ngược lại. Tôi muốn một HTTP * Client * sẽ sử dụng SPDY khi có sẵn nhưng quay trở lại HTTP thông thường. –

+0

Ah, như thế.Sau đó, bạn vẫn có thể sử dụng khá nhiều cách tiếp cận tương tự và bộ xử lý. Nhưng thay vì sử dụng một ServerBootstrap, hãy sử dụng ClientBootstrap –

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