8

WebSocket 実装と統合したいRails 3 の非同期バージョンを作成しました。

私は EventMachine、Ruby 1.9、Fibers、および非常に優れたIlya Grigorikによって文書化されているさまざまな em フレーバー ライブラリを使用しています。

WebSocket 接続のハンドラーとしてem-websocketを見てきましたが、これを Rails アプリにフックするための最良の方法がわかりません。

理想的には、これは Express および Socket.io を使用した node.js と同様の方法で機能します。着信接続を検出し、HTTP ヘッダー & などで示されるように、WebSocket ハンドラーまたは通常のレール スタックにディスパッチする必要があります

TL;DR

  • 既存の Rails アプリケーションにプラグインする WebSocket ハンドラー
  • 着信 WebSocket リクエストをアプリ内のエンドポイントに透過的にディスパッチする
4

3 に答える 3

5

私はこの質問が古いことを知っていますが、うまくいけば、この答えがグーグルからここに向けられた人々を助けるかもしれません。

私は元の質問の2つの主要な基準を満たす宝石に取り組んでいます。この宝石はwebsocket-railsと呼ばれ、Railsアプリケーション内でWebSocketを簡単に使用できるようにゼロから開発されました。ようやく安定したリリースになりましたが、必要だと思う機能はもっとたくさんあります。

現在、イベント処理は非常に基本的です。events.rbクライアント側のイベントをファイルと同様のコントローラーアクションにマップするファイルがありroutes.rbます。のすべてのリクエスト/websocketは、個別のサーバープロセスを必要とせずに、組み込みのWebSocketサーバーに渡されます。

プロジェクトのより野心的な目標は、最終的にRailsをより伝統的なMVCパターンに移行することです。このパターンでは、モデルを処理および更新するためにクライアントブラウザーのイベントがサーバーにバブルアップし、クライアントのイベントを自動的にトリガーして、そのモデルのレンダリングされた表現を更新します。 。

フィードバックをいただければ幸いです。

于 2012-06-03T22:35:34.527 に答える
2

スキニーをチェックしてください。

Thinを使用する必要がありますが、途中で HTTP リクエストをアップグレードできます。私は Sinatra アプリで使用していますが、Rails でも同様に簡単に使用できるはずです。

于 2011-05-30T04:11:57.683 に答える
1

多分靴下を試してみてください?今のところそれが最善で、Rails (2 と 3 の両方) と統合するのはかなり簡単です。

于 2010-11-22T18:17:49.757 に答える