問題タブ [private-pub]
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 - Rails:ライブアップデート/Fayeを使用するときにAbstractController::DoubleRenderErrorを回避するには?
コントローラーを介したライブ更新用にFayeの上に構築されたgemであるPrivate Pubを使用しています。Faye サーバーがサービスを提供できなかった場合に備えて、Live Update Render のフォールバックを行うことができずに困っています。
最初のレンダリング メソッドが失敗した場合、この状況を回避して 2 回目にレンダリングする方法はありますか?
これが私のcreate
行動です:
通常、エラーが発生すると、2 番目のブロックに進み、最初のブロックは無視されます。ここではそうではありませんが、それは次のように言っているからです:
でAbstractController::DoubleRenderError
発生しましたuser_comments#create
:
このアクションでレンダリングやリダイレクトが複数回呼び出されました。render または redirect のみを呼び出すことができ、アクションごとに最大 1 回しか呼び出せないことに注意してください。また、redirect も render もアクションの実行を終了しないことに注意してください。そのため、リダイレクト後にアクションを終了する場合は、「redirect_to(...) and return」のようなことを行う必要があります。app/controllers/my_controller.rb130:in `ブロック (2 レベル) in normalAjaxRender'
ruby-on-rails - 非同期フェイサーバーを適切にテストするには?
アプリにリアルタイム機能を持たせるために private_pub gem を使用しています。
本当に罪悪感がありますが、このアプリのテストをやめました!
すべてが手動で機能することを確認するには、2 つのブラウザーを開いて相互に通信する必要があります。(Facebook のチャットを想像してみてください。)
セレン、カピバラ、またはキュウリで同時に 2 つのブラウザーを開く方法がわかりません。私はあらゆる種類のテスト フレームワークやユーティリティに対してオープンです。
2 つの開いているブラウザーでテストするにはどうすればよいですか? さらに情報が必要な場合はお知らせください。
ありがとうございました!
ruby-on-rails-4.1 - Private_pub gem と Rails 4.1.1。メッセージを送信した後、ページが更新されない
何らかの理由で、メッセージを送信した後、ページが更新されません。ページを手動で更新した後にのみ機能します。このチュートリアルhttp://railscasts.com/episodes/316-private-pubに部分的に従いましたが、何かが正しくありません。ここに私のファイルがあります:
app/controllers/main_controller.rb
アプリ/コントローラー/messages_controller.rb
アプリ/ビュー/レイアウト/application.html.erb
アプリ/ビュー/メイン/application.html.erb
アプリ/ビュー/メッセージ/create.js.erb
アプリ/ビュー/メッセージ/_message.html.erb
config/routes.ru
アプリ/モデル/メッセージ.rb
Gemfile
アプリ/資産/javascripts/application.js
私も走ってきました
private_pub が必要とするためです。
「送信」ボタンをクリックした後の POST を表すサーバー ログの一部を次に示します。
十分な情報を提供できたことを願っています。そうでない場合は、さらにリクエストしてください。前もって感謝します。
ruby-on-rails - Angular JS で PrivatePub を使用する
Angular アプリ内でPrivatePubを使用しようとしています。私はチャットをしており、メッセージは AngularJS によって管理されています。背後にある API は Rails で実行されています。コントローラーではヘルパーを使用してチャネルに公開しています。問題はサブスクライブのクライアント側にあります。これが私がやろうとしていることです:
PrivatePub サブスクライブで $apply と $watch を使用しようとしましたが、スコープを更新する方法がありません。私の PrivatePub 関数は Angular の外にある必要がありますが、受け取るデータは $scope.I に追加する必要があります。
ruby-on-rails - 接続タイムアウト: Private_Pub + SSL + Nginx
SSL を使用して Private_Pub を実装し、https ://github.com/ryanb/private_pub#serving-faye-over-https-with-thin で推奨されているようにポート 4443 で実行しています。
ただし、実際に private_pub サービスを使用するたびに、次のエラーが表示されます。
Errno::ETIMEDOUT: 接続がタイムアウトしました - connect(2) for "www.mysite.com" port 4443
本当に奇妙なことは、プロバイダーを移行する前に別のサーバーで動作していたことです。
ポート 4443 が正常に telnet で開いていることを確認しました。運が悪くてもnginxの設定をいじってみました。運が良いかどうかを確認するためだけに、シンサーバーを数回再起動しました。
アクセスできます: https://www.mysite.com:4443/faye/faye.js
ここで誰かが私を正しい方向に向けることができますか?
編集:私のnginx構成ファイルを追加しました:
ruby-on-rails - PrivatePubから更新を受け取ったときにRailsパーシャルをレンダリングする方法は?
アプリケーションコントローラーにアクションがありますapplication_controller.rb
別のユーザーがコメントを書いたとき、または他のアクションを実行したときに、ユーザーに通知を生成します。
views/activities/_activity.html.erb にパーシャルがあります
/layouts/_header.html.erb での呼び出し
そして今、他のユーザーがコメントを作成するときに、Private_pub gem new trac_activity を使用して publish_to("/notifications") が必要ですが、これを行う方法がわかりません
私はこれをする必要があります
アプリケーションコントローラーでアクションを実行し、remote: true のフォームがない場合、ファイルを保存する必要がある場所がわかりません。
javascript - アクションにフォームがない場合、レールで js を応答するのは難しいですか?
通知システムを作ろうとしているのですが、問題があります
これを使用してビューに通知を発行する必要があります: track_activity.js.erb
アクショントラックアクティビティを含む私のapplication_controller
そして、他のユーザーがこのようなものを作成するたびに、このメソッドを使用します
comment_controller.rb
レールが track_activity アクションを呼び出すたびに track_activity.js.erb をアタッチする方法は? track_activity アクションの Respond_to が役に立たない
ruby-on-rails - Rails gem Private_Pub facebook like チャット実装
private_pub gem を使用して一種の Facebook チャットを実装しようとしていますが、次の問題が発生しています。
アプリケーション user1 と user2 に 2 人のユーザーがログインしているとします。user1 は user2 にメッセージを送信します。ただし、user2 が user1 にメッセージを送信したい場合 (チャット ウィンドウを開く) にのみ発生する会話チャネルにサブスクライブしない限り、user2 はそのメッセージを受信しません。
user1 がメッセージを送信するときに user2 をチャネルにサブスクライブする最善の方法は何でしょうか (それは可能ですか?) これが不可能な場合、これを達成するための最良の方法は何でしょうか。今考えられることの 1 つは、ページが読み込まれるたびに user2 をチャンネルにサブスクライブすることですが、互いに会話できるユーザーが多すぎると、うまくいかないと思います。
助けてくれてありがとう!
ruby - ユーザーのオンライン ステータスを確認する
上にprivate_pub 1.0.3 gem
構築されたfaye
ものを使用しており、ローカルホストで使用できます。この gem を使用して、ユーザーのオンライン ステータスがオンラインかオフラインかを確認する機能を実装したいと考えています。
私はWebソケットにまったく慣れていないため、private_pubを構成するのが非常に簡単であることがわかったので、実装しました....しかし、上記の問題に悩まされています。それで、それに対する適切な解決策を教えてください。
このチュートリアルhttp://www.ryanepp.com/blog/how-do-i-tell-if-a-user-is-onlineを見つけました。これで問題を解決できると思います....redisサーバーを構成しましたコンソールでテストしましたが、すべて機能しています.....websocket-rails
コードの一部を独自のprivate_pub
gemの使用に置き換えるだけです。
アップデート
faye
これらのイベントを見つけました:
private_pub
しかし、 gemを使用してこれらのイベントを使用およびバインドするにはどうすればよいですか
新しいアップデート
faye-rails
およびgemの github で問題を開きましたprivate_pub
。アクセスしてください。問題の部分的な解決策を実行しましたが、問題は完全には解決しませんでした。
ありがとう
mysql - 未読メッセージカウンター
Rails 4 で簡単なチャット アプリを作成しています。コントローラー、モデル、およびビューは作成されていますが、機能はまだ不完全です。データベースには、会話とメッセージの 2 つのテーブルがあります。会話テーブルには、送信者 ID と受信者 ID の 2 つのフィールドがあります。メッセージ テーブルには、body、user id、read の 3 つのフィールドがあります (デフォルトは 0 で、未読を意味します)。
モデル:
私がやろうとしているのは、誰かが新しいメッセージを受信するたびに、未読メッセージのカウントを受信するリアルタイム機能を作成することです。ユーザー間のチャットを作成するためにプライベート パブを使用しています。
この関数を含むユーザー モデルがあります。
ユーザーのすべての会話がリストされているページが1つあり、会話がクリックされると、その会話に関連するすべてのメッセージもリストされます。conversation_messages_path
同じページで、会話ごとに個別のチャネルを作成するために、すべてを購読しました。メッセージが送信されるたびに、create.js.erb
サブスクライブしたチャネルに公開するファイルがレンダリングされます。
$("#conversation_link")
未読メッセージ数を表示したい場所です。
現在、未読メッセージ数は間違った数を返し、navbar はconversation.sender_id
メッセージが受信者に届いたときにのみ更新されます。
未読メッセージ カウンターが正しい数の未読メッセージを返しません。修正方法がわかりません。私のコードで何が問題になっていますか? ありがとう。