2

私はFaye上に構築されたPrivate_Pub gem を使用しています。私が見つけたプロジェクトのこのブログで提供されている Faye 用の別のアプリを使用しています。Faye をアプリで実行し、私の実際のサイトを別のアプリで実行します。

FireFox コンソールのエラー:

The connection to ws://xxxxxxxxxxx.herokuapp.com/faye was interrupted while the page was loading. Faye.js

そしてChromeで:

WebSocket connection to 'ws://xxxxxxxxxxx.herokuapp.com/faye' failed: One or more reserved bits are on: reserved1 = 1, reserved2 = 0, reserved3 = 0 

Chat(Faye)アプリのログで、ログに次のように表示されます:

at=error code=H12 desc="Request timeout" method=GET path=/faye host=xxxxxxxxxxx.herokuapp.com request_id=xxxxxxxxxxx fwd="xxxxxxxxxxx" dyno=web.1 connect=31ms service=30112ms status=503 bytes=0

助言がありますか: ?

ドメイン要求を許可するためにも追加しましafter_filterapplication_controller

4

2 に答える 2

2

これは私のアプリケーションの問題でもあり、heroku には 30 のタイムアウトがあり、faye.ru/config.ru に 30 を超えるタイムアウトが設定されている場合、このエラーが発生します。25 程度に減らしてみてください。 faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 25)

于 2014-02-15T12:00:26.550 に答える
1

この問題を解決するRails Appsには、相互にアクセスできるようにするか、相互に ping を実行する必要があります。そのためには、CORSなどを使用して、他のドメインからの AJAX リクエストを許可する必要があります。メソッド アクセスの記事へのアクセスを許可するために使用した簡単な方法を次に示します。最初は混乱するかもしれません。

これを両側で実行するにFayeは、質問に添付したFayeチャットサーバーRepoで提供されているものとは異なり、実際の完全なアプリも作成する必要があります.

  • ステップ1 :

実際の/メインアプリでは、これをあなたのapplication_controller.rb

  before_filter :cors_preflight_check
  after_filter :cors_set_access_control_headers
  #For all responses in this controller, return the CORS access control headers.
  def cors_set_access_control_headers
    headers['Access-Control-Allow-Origin'] = 'http://YOURFAYEAPP.com'
    headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'
    headers['Access-Control-Request-Method'] = 'http://YOURFAYEAPP.com'
    headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
  end
  # If this is a preflight OPTIONS request, then short-circuit the
  # request, return only the necessary headers and return an empty
  # text/plain.
  def cors_preflight_check
    if request.method == :options
      headers['Access-Control-Allow-Origin'] = 'http://YOURFAYEAPP.com'
      headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'
      headers['Access-Control-Request-Method'] = 'http://YOURFAYEAPP.com'
      headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
      render :text => '', :content_type => 'text/plain'
    end
end
  • ステップ2:

    Faye アプリ側では、同じものを に含めますapplication_controller.rbが、ドメイン名を Original/Actual/Main Rails アプリに変更します。

このようにして、両方がリクエストを送受信できます。*request の代わりに置かないでくださいparameter。セキュリティ上の問題です。methodsと のみGetを削減できますPost

于 2014-03-30T01:57:20.640 に答える