1

在文档中写道,您可以使用以下服务器端代码向所有连接的用户发送事件更新事件

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

然后在您的角度客户端代码中,您可以通过执行以下操作来监听此事件

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 回答