Facebook が提供するような通知システムを実装するための gem として、private_pub を使用しています。そのために、ビュー内のチャネルにサブスクライブし、さまざまな場所 (異なるコントローラー) から公開しています。
何が起こっているのかというと、1 つのサブスクリプションで多くのパブリッシュを取得することがあります。なぜこれが起こるのかについて何か考えがありますか?
私の最初の疑いは、通知メソッドを何度も呼び出している可能性があるということでした (ある種のループまたは何かで、しかし、1 回しか呼び出されていないことがわかります。したがって、問題は pub/sub の間のどこかにあるに違いないと思いますほとんどの場合、ビューに通知するときに何か間違ったことをしているためです。
次に、実装の一部を紹介します。
私のウェブサイトの _header.html.erb パーシャルで、次のようにユーザーの通知チャネルを購読します。
たとえば、私の friends_controller では、友人を追加するときに、通知を表示するための html を生成し、次のように通知を前に付けて jquery を公開します。
html_text = render_to_string(:partial => '通知/通知', :locals => {通知: 通知}, :formats => [:html]).squish jquery = "$('#notifications_" + user.id.to_s + "').prepend('#{html_text}');" PrivatePub.publish_to("/notifications/" + user.id.to_s, jquery)
長文で申し訳ありませんが、どなたかお力添えいただければ幸いです。前もって感謝します。
ところで、Ruby 2.0.0p247 で Rails 4.0.0 を実行しています。