1

Railsアプリを作成していますが、node.jsとsocket.ioを使用してチャット機能をアプリに統合したいと思います。Railsアプリを1つのサーバーにデプロイし、チャットをはるかに小さなサーバーにデプロイすることを計画しています(お金を節約するため)。私の理由は、チャットメッセージの送信に30秒かかる場合は問題ありませんが、ページの読み込みに30秒かかる場合は問題ありません。

とにかく、これが機能するためには、socket.ioクライアントファイルをサーバー化するRailsが必要です。私の小さなノードサーバーがクライアントファイルを提供する場合、小さなサーバーは大きなサーバーのボトルネックになります。基本的なチャットのプロトタイプを起動して実行していますが、クライアントファイルを提供するノードでのみ機能します。Railsにクライアントファイルを提供させるにはどうすればよいですか?

よろしくお願いします。

4

2 に答える 2

1

これが私が決めた解決策です。提供する必要のあるクライアントファイルを特定する代わりに、ノードサーバーにクライアントのJavaScriptを処理させることにしました。ノードサーバーがRailsサーバーのボトルネックにならないようにするために、socket.io-clientファイルを遅延ロードします。関連するコーヒースクリプトは次のとおりです。

$ ->
    $.getScript('http://localhost:8080/socket.io/socket.io.js')
    .done (script, textStatus) ->
        socket = io.connect('http://localhost:8080')
        setupSocket(socket)

ここで、http:// localhost:8080はノードのホスト/ポートです。setupSocketは、すべてのイベントハンドラーの設定を処理する私が作成した関数です。

于 2012-04-29T19:37:45.450 に答える
0

ほとんどの場合、「同一生成元ポリシー」の制限に直面しています。(コンソールログを確認してください)メインページはRoRホストからダウンロードされるため、スクリプトはそのホストへの接続のみを開始できます。

言い換えれば、これは不可能かもしれません。

于 2012-04-27T06:30:47.110 に答える