Backand: Как только прослушивать и передавать изменения в реальном времени для определенного элемента?

в документе написано, что вы можете отправлять события всем подключенным пользователям, используя следующий код на стороне сервера для события обновления

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, чтобы ограничить только заинтересованных пользователей.

Поскольку я не хочу, чтобы все анонимные пользователи получали все события обновления, а только те, которые относятся к элементу, на котором они находятся (глупо слушать обновления, которые вам все равно, не так ли!), был бы способ только слушать для событий по конкретному элементу?

Спасибо за вашу помощь


person lanlau    schedule 27.12.2015    source источник


Ответы (1)


На самом деле я нашел решение благодаря Back и блестящей команде поддержки (спасибо Itay!).

Решение довольно простое, вы можете поиграть со строкой имени события!

вернемся к моему примеру, скажем, я хочу, чтобы пользователь прослушивал только изменения в элементе, который он на самом деле просматривает (например, идентификатор элемента 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);
    });
person lanlau    schedule 27.12.2015