Feathers.js + socket.io - 按ID过滤服务更新

时间:2017-09-19 02:31:03

标签: socket.io feathersjs

我正在尝试收听有关“'事件”的更新。服务。我不需要知道“事件”中发生的所有更新。服务,只是具有特定身份的服务。

socket.on('event updated', (rEvent) => {
      console.log('Got an updated Event!', rEvent);
});

以上代码会监听“事件”的任何更新。服务,它的工作......我得到了一切。

但是,我想听一下“赛事/ 34' ...... 34是事件ID

我尝试过类似的事情:

socket.on('event/34 updated', (rEvent) => {
     console.log('Got an updated Event!', rEvent);
});

但这不起作用。

根据ID监听服务更新的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

确定发送到哪个客户端的事件是event filters的用途。因此,您将以某种方式确定属于connection的用户是否正在侦听事件ID:

app.service('events').filter('updated', function(data, connection, hook) {
  if(checkIfUserListensToEventId(connection.user, event)) {
    return data;
  }

  return false;
});

通常,服务器端过滤器应仅确定用户是否允许查看数据。事件相对便宜,并且在客户端上确定是否应该使用或忽略数据(而不是必须以某种方式在服务器上有状态地跟踪它)更容易。

旁注:Feathers v3将support rooms/channels使事件调度更具效果。