1

ドキュメントでは、更新イベントに次のサーバー側コードを使用して、接続されているすべてのユーザーにイベントを送信できると書かれています

function backandCallback(userInput, dbRow, parameters, userProfile)       
{  
  socket.emitAll("items_updated", userInput);  
} 

次に、Angular クライアント コードで、次のようにしてこのイベントをリッスンできます。

Backand.on('items_updated', function (data) {
  //Get the 'items' object that have changed
  console.log(data);
});

私は匿名ユーザーと作業しています。emitUsers または emitRoles を使用して、関係するユーザーのみに制限することはできません。

すべての匿名ユーザーがすべての更新イベントを受信するのではなく、それらがオンになっているアイテムのイベントのみを受信するようにしたくないため (気にしない更新をリッスンするのはばかげています!)、リッスンのみする方法はありますか?特定のアイテムのイベント用?

ご協力いただきありがとうございます

4

1 に答える 1

4

実際、私は Backand の素晴らしいサポート チーム (Itay に感謝します!) のおかげで解決策を見つけました。

解決策は非常に簡単です。イベント名の文字列で遊ぶことができます!

私の例に戻って、ユーザーが実際に表示しているアイテムの変更のみをリッスンしたいとしましょう (たとえば、アイテム ID は 57 です)。コードは次のようになります。
- サーバー コード側

function backandCallback(userInput, dbRow, parameters, userProfile)       
{  
  //if the updated item has an id=57 for example, 
  //the event emitted will be "items_updated_57"
  socket.emitAll("item_updated_" + dbRow.id, userInput);  
} 

-角度のあるクライアントコードで

//currentItem id
var itemId=57;    
Backand.on('item_updated_'+ itemId, function (data) {
      //will be triggered when we receive an event named 
      // "item_updated_57"
      console.log(data);
    });
于 2015-12-27T09:36:09.487 に答える