feathersjs - 羽毛唯一的客户ID?
问题描述
我正在运行一个 feathers.js 应用程序,并且正在关注资源的更新。我希望能够唯一标识我是否是发送更新的客户端。最好的表达方式是什么?
如果我在 2 个相同的浏览器窗口上以同一用户身份登录,我也应该能够判断我是否从当前浏览器窗口更新了资源。
编辑:或者有没有办法至少停止向客户端发送更新?
解决方案
这需要一些挖掘,但我能够使用一些自定义 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;
});
});
它不需要任何客户端设置,但在我的情况下,我使用它来识别会话,所以我确实确保每次页面加载只创建一个套接字并在所有客户端实例之间共享它。
推荐阅读
- c++ - 正则表达式搜索 C 样式转换并在 Notepad++ 中替换为 C++ 的 static_cast
- ajax - 优化大型数据集的 ajax 请求
- c# - IDE0029 Null 检查可以简化 C# 6.0 ASP.NET
- javascript - 在 html 页面上选择表单域
- android - 单击按钮时,侦听器不起作用
- css - 文本输入中自动填充的 CSS 字体系列问题
- swift - 如何切掉 UIButton 的角,而不是圆角?
- java - 我可以用 firebird 数据库安装 jhipster 吗?
- python - 使用 Form() 时如何更改 Python 中的 MainWindow 标题?
- .net - 这个项目不知道如何运行配置文件 docker