Tiết lộ: Tôi là tác giả của Faye.
- Về Faye, mọi thứ bạn nói đều đúng.
- Faye thực hiện hầu hết Bayeux, điều duy nhất còn thiếu hiện nay là các kênh dịch vụ, mà tôi chưa được thuyết phục về tính hữu ích của. Đặc biệt, Faye được thiết kế để tương thích với việc thực hiện tham chiếu CometD của Bayeux, trong đó có một sức chịu đựng lớn về sau.
- Khái niệm, có: Faye có thể sử dụng Socket.IO. Trong thực tế, có một số rào cản đối với điều này:
- Tôi không biết loại Socket hỗ trợ phía máy chủ nào.IO yêu cầu, và yêu cầu rằng máy khách Faye (có các máy khách phía máy chủ trong Node và Ruby, hãy nhớ) có thể nói chuyện với bất kỳ máy chủ Bayeux nào (và máy chủ Faye cho bất kỳ máy khách Bayeux nào) có thể là bộ ngắt kết nối.
- Bayeux có các yêu cầu cụ thể mà máy chủ và khách hàng hỗ trợ một số loại phương tiện nhất định và nói cách thương lượng sử dụng loại phương tiện nào. Nó cũng chỉ định cách chúng được sử dụng, ví dụ cách Content-Type của một yêu cầu XHR ảnh hưởng đến cách nội dung của nó được diễn giải như thế nào.
- Đối với một số loại xử lý lỗi, tôi cần truy cập trực tiếp vào phương tiện, ví dụ resending messages when a client reconnects after a Node WebSocket dies.
- Hãy sửa tôi nếu tôi có bất kỳ sai sót nào - điều này được dựa trên việc quét lướt qua tài liệu về Socket.IO.
- Faye chỉ là pub/sub, nó chỉ dựa trên một giao thức hơi phức tạp hơn và có rất nhiều niceties xây dựng trong:
- Server-và client-side mở rộng
- Wildcard mô hình khớp trên các tuyến kênh
- Tự động kết nối lại, ví dụ: khi WebSockets chết hoặc máy chủ đi ẩn
- Các khách hàng làm việc trong tất cả các trình duyệt, trên điện thoại và server-side trên Node và Ruby
Faye lẽ trông rất phức tạp hơn so với Juggernaut vì Juggernaut đại biểu nhiều hơn, ví dụ nó ủy thác thương lượng vận chuyển đến Socket.IO và định tuyến thư tới Redis. Đây là cả hai quyết định tốt, nhưng quyết định của tôi để sử dụng Bayeux có nghĩa là tôi phải tự làm nhiều việc hơn.
Đối với triết lý thiết kế, mục tiêu quan trọng của Faye là nó sẽ hoạt động ở mọi nơi trên Web và có thể hoàn toàn tầm thường để bắt đầu. Tôi thực sự đơn giản để bắt đầu nhưng khả năng mở rộng của nó có nghĩa là nó có thể được tùy chỉnh theo những cách khá mạnh mẽ, ví dụ bạn có thể biến nó thành dịch vụ push từ máy chủ đến máy khách (tức là dừng máy khách tùy ý) bằng cách thêm phần mở rộng xác thực .
Ngoài ra còn có công việc đang được tiến hành để làm cho nó linh hoạt hơn ở phía máy chủ. Tôi đang xem xét thêm hỗ trợ phân cụm và làm cho trình cắm thêm công cụ phụ pub-sub cốt lõi để bạn có thể sử dụng Faye làm giao diện web không trạng thái cho một hệ thống pub-sub khác như Redis hoặc AMQP.
Tôi hy vọng điều này hữu ích.
Chỉ trong trường hợp, Juggernaut đã không được chấp nhận! Đọc tại sao http://blog.alexmaccaw.com/killing-a-library. – Maziyar
HTML 5 Sự kiện máy chủ được gửi dường như là sự thay thế được đề xuất theo tác giả Juggernaut – Harindaka