版本: 8.0.3
环境:
- 操作系统: macOS Big Sur 11.5.2
- 浏览器: 谷歌浏览器版本 92.0.4515.159(官方版本)(x86_64)
- Node.js: 13.14.0
你好,
我将 Primus 与 websockets 一起使用,我想知道它是否支持异步插件。我查看了 Primus 文档,但没有找到我需要的东西。
基本上我正在尝试将异步函数传递给 Primus 构造函数,如下所示:
this.primus = new Primus(server, {
pathname: '/my-path', plugin: {
'my-validator': {
server: myAsyncPlugin //this should run only on the server
}
}
});
问题是,如果我这样注册插件,它就不起作用,并且我的插件总是在其他处理程序之后调用,但我希望它在其他事情发生之前执行,因为它验证了一些传入参数。(我也查看了中间件,但无法正常工作)
因此,如果我在构造函数中注册我的插件,然后执行以下操作,我的插件将无法工作:
this.primus.on('connection', (spark) => {
//...do stuff
});
但是,如果我从构造函数中删除插件并使用以下代码,一切都会按预期工作,因为我使用的是这样的异步函数:
this.primus.on('connection', async (spark) => {
//await myPlugin.doStuff();
//other stuff
});
以下是示例插件代码的样子:
public doPluginStuff = (primus, options) => {
primus.on('connection', async (spark) => {
await exectuteAsyncStuffHere();
});
};
所以我很好奇是否有办法实现我所需要的,或者我是否必须直接在“连接”处理程序中调用我的插件。
谢谢!