問題タブ [cramp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
753 参照

ruby-on-rails - クランプとヘロク

アプリで情報をリアルタイムでプッシュするために Cramp をいじっています。ローカルではすべてうまく機能していますが、herokuにプッシュすると、ポートに問題があるようです。

websocket から継承する cramp にソケットをセットアップしました

また、基本的にホームページ用にいくつかのerbをレンダリングするだけのホームと呼ばれるクランプアクションもあります

私のルートファイルでは、次のものと静的ファイルサーバーをセットアップしました

次に、クライアント側でJavaScriptが接続します

私がローカルで言うように、それはすべて機能します。接続して、サーバーからの通知の受信を開始します。heroku では、Cedar スタックで薄く実行し、次のようなプロファイルを持っています。

サイトをロードすると、ページ自体は正常にロードされますが、websocket に接続しようとすると、次のエラーが表示されます

これは、heroku がリクエストをルーティングする方法と関係があると推測していますが、heroku で node.js Websocket サーバーを実行できることはわかっているので、これも機能させる方法があるはずです。

助けてくれてありがとう。

乾杯

スチュアート

0 投票する
1 に答える
935 参照

ruby - Cramp :: Websocketと通常のRackアプリを同じポートで提供するにはどうすればよいですか?

Ruby1.9.3とThin1.3.1を使用して、同じポートを使用して通常のHTTPトラフィックと、Cramp(EventMachine上に構築されている)を介したHTML5WebSocketを提供しようとしています。最小限の自己完結型の例を次に示します。

これを自分で試してみたい場合は、このコードをという名前のファイルに貼り付けconfig.ruて実行しますthin start。宝石が必要で、thinインストールcrampする必要がありhttp_routerます。

JavaScriptコードがにWebSocket接続を確立しws://localhost:3000/socket、送信されたメッセージをエコーするという考え方ですが、これは意図したとおりには機能しません。イベントが発生し、メッセージのopen送信時にエラーは発生しませんが、応答はありません。

サーバーの観点からは、Client connectedメッセージが出力されないため、接続は確立されていません。

を使用するthin start -Dと、HTTP 101が発生し、一部のバイナリデータが交換されていることがわかります。

私は何が間違っているのですか?

更新:ファイルを2つの部分に分割し、を取り除いて、異なるポートでHttpRouter2つのインスタンスを実行thinしても、それでも機能しません。したがって、問題は、HttpRouterまたはではなく、ソケットコードにありますWebApp

0 投票する
1 に答える
289 参照

ruby - Websocket の読み取り要求が文字化けする

Cramp フレームワークを使用して最小限の Websocket 実装を作成しようとしています。Cramp は通常の Web コンテンツを正常にレンダリングしますが、HTML5 WebSocket を使用しようとすると問題が発生します。

私のアクションクラスは次のとおりです:

私のjavascriptコードは次のとおりです:

サーバー (シン) は、データが送信されたときに検出しますが、読み取られるテキストは文字化けします。

データのエンコーディングは ASCII-8BIT です ( puts data.encoding「ASCII-8BIT」と表示されます)。ただし、data.force_encoding('UTF-8') を使用して UTF エンコードを強制しても、問題は解決しません。さらに、エンコーディングを強制した後 - 強制するdata.valid_encoding?前に true だったところに false を返します。

ruby-1.8.7 と ruby​​-1.9.3 でアプリをテストしました。出力は両方のシナリオで同じです。

もう 1 つの奇妙な点は、クライアント側で onmessage イベントが発生しないことです。

また、HomeAction から keep_connection_alive 呼び出しを削除すると、データが受信された直後に接続が終了し、クライアントはサーバーから送信されたデータを受信しません (「Hello world」)。

Google chrome (最新バージョン) と Mozilla firefox (最新バージョン) でアプリをテストしました。問題は両方でまったく同じままです。私のオペレーティング システムは Ubuntu 12.04 LTS (Precise Pangolin) です。

この点で何か助けていただければ幸いです。

0 投票する
1 に答える
110 参照

ruby - サーバー送信イベントを含む Cramp アプリケーションのデバッグ

アプリケーションでサーバー送信イベントを実装するためにCramp ( http://cramp.in ) を使用しています。アプリを実行するためのサーバーとしてシンを使用しています。Rails では、デバッガー gem を使用して Rails アプリをデバッグできます。クランプアプリケーションのデバッグにも使用されますか?

0 投票する
1 に答える
144 参照

ruby-on-rails - Crampアプリの認証にDeviseを使用できますか?

Cramp.in(http://cramp.in)フレームワークを使用してアプリを作成しました。アプリケーションの認証を設定する必要があります。Railsでは、この目的でDeviceを使用しました。デバイスをクランプアプリケーションで使用できますか、それとも他のものを使用する必要がありますか?

ありがとうございました

0 投票する
2 に答える
357 参照

ruby - WebSocket用のruby用の安定した本番環境対応のライブラリはありますか?

私はしばらくの間node.jsでSocket.ioを使用してきましたが、Rubyでこれを実行したいと思っています。利用可能なプロジェクトがいくつかあるようですが、それらのほとんどは死んでいます。

私が見つけた唯一のプロジェクトはem-websocketですが、これは非常に低レベルであり、クライアント側のライブラリはありません。

私はいくつかのプロジェクトを見逃しているのでしょうか、それともライブラリーでしょうか、それともRubyでWebSocketを実行する方法が本当にないのでしょうか?

0 投票する
1 に答える
635 参照

ruby - Cramp(Ruby)およびSSE(HTML5)によるリアルタイム更新

Cramp(Ruby)SSE(HTML5)を使用して、サーバーからリアルタイムで更新を取得するためのサンプルアプリケーションを用意しました。

を介してHTMLにアクセスしているときに次のエラーが発生しますhttp://localhost/sse_time.html

sse_time.html

app /アクション/time_action.rb

どこにline 9ありますかvar source = new EventSource('http://localhost:3000/time');

クロームを打つhttp://localhost:3000/timeと、5秒ごとにエラーなしで時間が表示されます。

http://localhost:3000/timeただし、PHPコードでは、URIをstream.phpinに置き換えても問題なく機能します。sse_time.html

stream.php

ここstream.phpsse_time.html同じ場所に住んでいます。

この問題を解決するために誰かが私を案内してくれませんか?

0 投票する
1 に答える
151 参照

ruby - em-synchronyを使用してフレームワーク同期を正しく「レンダリング」する

私の問題を説明するために、単純な Cramp http://cramp.in/クラスを添付します。いくつかの変更を追加しますが、主にhttps://github.com/lifo/cramp-pub-sub-chat-demo/blob/master/app/actions/chat_action.rbのように機能します

私がやろうとしていることの詳細は、handle_message メソッドにあります。

クライアントに正しい順序でメッセージを送信しようとしました。最初にすべてのサブスクライバーにメッセージを発行し、次に現在接続されているクライアントに対してのみ内部情報をレンダリングします。

上記のコードの場合、クライアントは次を受け取ります。

おそらく em-hiredis の遅延可能な応答のため、同期されていません。だから私はこの方法でそれを同期しようとします:

現在、クライアントは正しい順序でメッセージを処理します。

私の質問は次のとおりです。

  • EM::Synchrony.next_tick ブロックにコメントすると、メッセージの順序が正しくありません。この例の EM::Synchrony.next_tick ブロックにはどのような意味がありますか?
  • これは Cramp または EventMachine とのインライン同期を処理する良い方法ですか?
  • それを処理するためのより良い、より明確な方法はありますか?

ありがとうございました!

0 投票する
1 に答える
1636 参照

ruby-on-rails - Cramp でバンドル インストールを実行すると奇妙なエラーが発生する

以下はGemfileデフォルトの Rails アプリケーションです。

私が実行bundle installしている間、すべてが正常にインストールされています。

今やります

こちらも問題なく取り付けられています。

そして最後に含める

Gemfile。今から、次の結果が得られます。

バンドル インストール

バンドルの更新

Cramp のバージョンを指定しなかったので、インストールしたバージョンと同じものを使用する必要がありますgem install cramp。しかし、gem install問題なく機能し、バンドルのインストールで未解決の依存関係が見つかったのはなぜですか?

Windows 7 + Ruby 2.0.0p451 + Rails 4.1.0、および同じRubyとRailsバージョンのUbuntu 12.04 LTSでこれをすべて実行しようとしています。

私が試したこと:私は実行bundle installbundle update、デフォルトで実行しGemfile、次に追加gem 'cramp'し、実行bundle installbundle updateました。結果は数行上に表示されます。