首页 > 解决方案 > 羽毛唯一的客户ID?

问题描述

我正在运行一个 feathers.js 应用程序,并且正在关注资源的更新。我希望能够唯一标识我是否是发送更新的客户端。最好的表达方式是什么?

如果我在 2 个相同的浏览器窗口上以同一用户身份登录,我也应该能够判断我是否从当前浏览器窗口更新了资源。

编辑:或者有没有办法至少停止向客户端发送更新?

标签: feathersjs

解决方案


这需要一些挖掘,但我能够使用一些自定义 express 中间件很好地工作。

// app.js

app.configure(
  socketio(io => {
    io.use((socket, next) => {
      socket.feathers.connectionID = socket.client.id;
      next();
    });
  })
);
// myService.service.js (or wherever you set up your channels)

service.publish((data, context) => {
  return app.channel(...).filter((connection) => {
    const senderConnectionID = context.params.connection.connectionID;
    const thisConnectionID = connection.connectionID;
    return senderConnectionID !== thisConnectionID;
  });
});

它不需要任何客户端设置,但在我的情况下,我使用它来识别会话,所以我确实确保每次页面加载只创建一个套接字并在所有客户端实例之间共享它。


推荐阅读