0

ここに画像の説明を入力ここに画像の説明を入力私は pusher.com を初めて使用します。プレゼンス チャネル チャットを設定しようとしています。

これが私のコードです:

var PresenceChannel = pusher.subscribe('presence-test_channel');

PresenceChannel.bind('pusher:subscription_succeeded', function(members){
  $("#chatMembers").empty();

  members.each(function(member) {
     $("#chatMembers").prepend("<li id='"+member.info.employee_id+"'>"+member.info.customer_id+"</li>");
  });   
});

PresenceChannel.bind('pusher:member_added',function(member){
     $("#chatMembers").prepend("<li id='"+member.info.employee_id+"'>"+member.info.customer_id+"</li>");
});

PresenceChannel.bind('pusher:member_removed',function(member){
    $("li#"+member.info.employee_id).remove();
});

期待どおりに動作します。

しかし、私には問題があります:

開いているブラウザ ウィンドウの 1 つを更新すると、次のイベントが発生します。

PresenceChannel.bind('pusher:member_added',function(member){...

そしてその直後、

PresenceChannel.bind('pusher:member_removed',function(member){...

くびになる。そのため、1 つのウィンドウを更新した後、ユーザーはリストから削除され、1 秒後に再びユーザーがリストに追加されます....

1) ブラウザ ウィンドウを 1 つリロードする

2) 別のウィンドウで「pusher:member_removed」がトリガーされます: ユーザーがリストから削除されました

3) 別のウィンドウで「pusher:member_added」がトリガーされます: ユーザーがリストに追加されました

何をすべきか ?

4

2 に答える 2

1

pusher:member_removed1 番目のウィンドウがアンロードされ、ユーザーがプレゼンス チャネルを離れたため、2 番目のウィンドウは を受け取ります。2 番目のウィンドウがリロードされ、ユーザーがプレゼンス チャネルに再登録すると、pusher:member_addedがトリガーされます。

これは予期される動作です。

ただし、プッシャーは、このシナリオでトリガーされるイベントを停止しようとするために、これらのイベントに遅延を追加します。あなたの場合、遅延が発生するのを止めるのに十分な長さではないようです。あなたの状況では、これを回避するためにできることについていくつかの情報を提供する FAQ があります。

于 2013-07-28T09:06:37.320 に答える