問題タブ [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.

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

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'

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

ruby-on-rails - 非同期フェイサーバーを適切にテストするには?

アプリにリアルタイム機能を持たせるために private_pub gem を使用しています。

本当に罪悪感がありますが、このアプリのテストをやめました!

すべてが手動で機能することを確認するには、2 つのブラウザーを開いて相互に通信する必要があります。(Facebook のチャットを想像してみてください。)

セレン、カピバラ、またはキュウリで同時に 2 つのブラウザーを開く方法がわかりません。私はあらゆる種類のテスト フレームワークやユーティリティに対してオープンです。

2 つの開いているブラウザーでテストするにはどうすればよいですか? さらに情報が必要な場合はお知らせください。

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

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

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 を表すサーバー ログの一部を次に示します。

十分な情報を提供できたことを願っています。そうでない場合は、さらにリクエストしてください。前もって感謝します。

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

ruby-on-rails - Angular JS で PrivatePub を使用する

Angular アプリ内でPrivatePubを使用しようとしています。私はチャットをしており、メッセージは AngularJS によって管理されています。背後にある API は Rails で実行されています。コントローラーではヘルパーを使用してチャネルに公開しています。問題はサブスクライブのクライアント側にあります。これが私がやろうとしていることです:

PrivatePub サブスクライブで $apply と $watch を使用しようとしましたが、スコープを更新する方法がありません。私の PrivatePub 関数は Angular の外にある必要がありますが、受け取るデータは $scope.I に追加する必要があります。

0 投票する
0 に答える
346 参照

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構成ファイルを追加しました:

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

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 のフォームがない場合、ファイルを保存する必要がある場所がわかりません。

0 投票する
0 に答える
92 参照

javascript - アクションにフォームがない場合、レールで js を応答するのは難しいですか?

通知システムを作ろうとしているのですが、問題があります

これを使用してビューに通知を発行する必要があります: track_activity.js.erb

アクショントラックアクティビティを含む私のapplication_controller

そして、他のユーザーがこのようなものを作成するたびに、このメソッドを使用します

comment_controller.rb

レールが track_activity アクションを呼び出すたびに track_activity.js.erb をアタッチする方法は? track_activity アクションの Respond_to が役に立たない

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

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 をチャンネルにサブスクライブすることですが、互いに会話できるユーザーが多すぎると、うまくいかないと思います。

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

0 投票する
0 に答える
731 参照

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_pubgemの使用に置き換えるだけです。

アップデート

fayeこれらのイベントを見つけました:

private_pubしかし、 gemを使用してこれらのイベントを使用およびバインドするにはどうすればよいですか

新しいアップデート

faye-railsおよびgemの github で問題を開きましたprivate_pub。アクセスしてください。問題の部分的な解決策を実行しましたが、問題は完全には解決しませんでした。

private_pub 発行 110

faye-rails issue 72

ありがとう

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

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メッセージが受信者に届いたときにのみ更新されます。

未読メッセージ カウンターが正しい数の未読メッセージを返しません。修正方法がわかりません。私のコードで何が問題になっていますか? ありがとう。