問題タブ [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.
ruby-on-rails - クランプとヘロク
アプリで情報をリアルタイムでプッシュするために Cramp をいじっています。ローカルではすべてうまく機能していますが、herokuにプッシュすると、ポートに問題があるようです。
websocket から継承する cramp にソケットをセットアップしました
また、基本的にホームページ用にいくつかのerbをレンダリングするだけのホームと呼ばれるクランプアクションもあります
私のルートファイルでは、次のものと静的ファイルサーバーをセットアップしました
次に、クライアント側でJavaScriptが接続します
私がローカルで言うように、それはすべて機能します。接続して、サーバーからの通知の受信を開始します。heroku では、Cedar スタックで薄く実行し、次のようなプロファイルを持っています。
サイトをロードすると、ページ自体は正常にロードされますが、websocket に接続しようとすると、次のエラーが表示されます
これは、heroku がリクエストをルーティングする方法と関係があると推測していますが、heroku で node.js Websocket サーバーを実行できることはわかっているので、これも機能させる方法があるはずです。
助けてくれてありがとう。
乾杯
スチュアート
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つの部分に分割し、を取り除いて、異なるポートでHttpRouter
2つのインスタンスを実行thin
しても、それでも機能しません。したがって、問題は、HttpRouter
またはではなく、ソケットコードにありますWebApp
。
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) です。
この点で何か助けていただければ幸いです。
ruby - サーバー送信イベントを含む Cramp アプリケーションのデバッグ
アプリケーションでサーバー送信イベントを実装するためにCramp ( http://cramp.in ) を使用しています。アプリを実行するためのサーバーとしてシンを使用しています。Rails では、デバッガー gem を使用して Rails アプリをデバッグできます。クランプアプリケーションのデバッグにも使用されますか?
ruby-on-rails - Crampアプリの認証にDeviseを使用できますか?
Cramp.in(http://cramp.in)フレームワークを使用してアプリを作成しました。アプリケーションの認証を設定する必要があります。Railsでは、この目的でDeviceを使用しました。デバイスをクランプアプリケーションで使用できますか、それとも他のものを使用する必要がありますか?
ありがとうございました
ruby - WebSocket用のruby用の安定した本番環境対応のライブラリはありますか?
私はしばらくの間node.jsでSocket.ioを使用してきましたが、Rubyでこれを実行したいと思っています。利用可能なプロジェクトがいくつかあるようですが、それらのほとんどは死んでいます。
- danthes-ライアンベイツのフォーク '
private_pub
- けいれん-過去9か月間活動なし
- socket.io-ruby-過去11か月間アクティビティがありません
私が見つけた唯一のプロジェクトはem-websocketですが、これは非常に低レベルであり、クライアント側のライブラリはありません。
私はいくつかのプロジェクトを見逃しているのでしょうか、それともライブラリーでしょうか、それともRubyでWebSocketを実行する方法が本当にないのでしょうか?
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.php
inに置き換えても問題なく機能します。sse_time.html
stream.php
ここstream.php
とsse_time.html
同じ場所に住んでいます。
この問題を解決するために誰かが私を案内してくれませんか?
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 とのインライン同期を処理する良い方法ですか?
- それを処理するためのより良い、より明確な方法はありますか?
ありがとうございました!
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 install
しbundle update
、デフォルトで実行しGemfile
、次に追加gem 'cramp'
し、実行bundle install
しbundle update
ました。結果は数行上に表示されます。