【发布时间】:2020-03-13 07:47:20
【问题描述】:
当在客户端和服务器端使用feathersjs时,在应用程序钩子(在客户端)中,我们会收到一个包含多个字段的对象,例如服务、方法、路径等。
我想通过 socket io 为该对象添加一个自定义字段。那可能吗?更准确地说,我想向客户端发送当前版本的前端应用程序,以便能够在前端过时时强制或建议刷新(使用 pwa)。
谢谢!
【问题讨论】:
标签: feathersjs
当在客户端和服务器端使用feathersjs时,在应用程序钩子(在客户端)中,我们会收到一个包含多个字段的对象,例如服务、方法、路径等。
我想通过 socket io 为该对象添加一个自定义字段。那可能吗?更准确地说,我想向客户端发送当前版本的前端应用程序,以便能够在前端过时时强制或建议刷新(使用 pwa)。
谢谢!
【问题讨论】:
标签: feathersjs
出于安全原因,只有params.query 和data(用于创建、更新和修补)在客户端和服务器之间传递。查询参数可以通过像这样的简单钩子从查询中提取到上下文中(您可以将版本作为__v 查询参数传递):
const setVersion = context => {
const { __v, ...query } = context.params.query || {};
context.version = __v;
// Update `query` with the data without the __v parameter
context.params.query = query;
return context;
}
此外,您还可以添加其他参数,例如版本号为extraHeaders,然后可以使用params.headers。
反过来(从服务器发送版本信息)可以通过在application hook中修改context.result来完成:
const { version } = require('package.json');
app.hooks({
after: {
all (context) {
context.result = {
...context.result,
__v: version
}
}
}
});
它需要添加到返回的数据中,因为 websockets 没有任何响应头。
【讨论】: