Công cụ Ruby on Rails WebSocket tốt nhất [đã đóng]


81

Tôi đã bắt đầu dự án trong Rails 3 và tôi cần thêm thông báo (như Facebook). Cách tốt nhất là sử dụng WebSocket cho các thiết bị hỗ trợ như iPad, nhưng tôi không thể tìm thấy bất kỳ công cụ tốt nào để dễ dàng triển khai nó trong Rails. Tôi đã tìm thấy Pusherapp, nhưng chúng có giá cao ngất ngưởng, và tôi cũng không nghĩ rằng việc cung cấp dữ liệu của mình cho công ty bên thứ ba sẽ là khôn ngoan. Vì vậy, những thứ cần thiết:

  • Mã nguồn mở
  • Một số loại kênh hỗ trợ
  • Người trợ giúp cho Rails (và làm việc với Rails 3)

Câu trả lời:


80

Nếu bạn đang tìm kiếm triển khai WebSocket thuần túy, thì EM-WebSocket có lẽ là tốt nhất. Nếu bạn muốn hỗ trợ cho dự phòng không flash (như điện thoại cũ hoặc iPhone 3G), bạn nên thử Socket.IO-rack .

Đối với các triển khai đầy đủ tính năng như Pusher (với xác thực và các kênh), bạn có hai lựa chọn nguồn mở: SockyJuggernaut .

Socky là một dự án ruby ​​thuần túy sử dụng EM-WebSocket (giống như bộ đẩy) và nó có một số công cụ tốt cho Rails. Mặt khác, Juggernaut có nhiều lịch sử hơn (và nhiều người dùng hơn) nhưng phiên bản mới đã được viết lại thành Node.JS (ứng dụng khách vẫn dựa trên ruby) và yêu cầu Redis. Cả hai sẽ hoạt động tốt.


4
Đối với những người quan tâm, Juggernaut hiện đã không được dùng nữa . Tác giả khuyên bạn nên sử dụng Sự kiện phía máy chủ HTML5 thay thế và cung cấp một bình luận hay trong liên kết thông báo ngừng sử dụng.
Jeff Dickey

3
Theo nhận xét của @ Jeff, Rails 4 cung cấp hỗ trợ tích hợp cho SSE thông qua mô-đun ActionController :: Streaming. Tài liệu tại đây: api.rubyonrails.org/classes/ActionController/Streaming.html
user456584

Máy chủ Iốt HTTP / Websocket là một phần mở rộng C của Ruby, cung cấp kết nối pub / sub gốc cũng như Redis. Nó được sử dụng bởi khuôn khổ plezi , cũng có thể được sử dụng làm phần mềm trung gian trong Rails.
Myst



9

Một tùy chọn khác mà có thể đáp ứng nhu cầu của bạn, nhưng là hơi bí truyền hơn là đi với một trong những JRuby appservers và sử dụng một trong các Java WebSockets triển khai. Jetty (cơ sở cho Trinidad ) được biết là có hỗ trợ websockets tốt nhất hiện có. Một tùy chọn khác (khá hay) là sử dụng máy chủ nhắn tin với trình bao bọc websocket cho các điểm cuối thư. Ví dụ: Torquebox (một máy chủ ứng dụng Jruby / Rails chuyên dụng) có hỗ trợ tích hợp cho HornetMQ, do đó có hỗ trợ cho các cổng kết nối web .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.