版本: 8.0.3
环境:
嗨,
我在websockets中使用Primus,我想知道它是否支持异步插件。我看了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();
});
};所以我很好奇是否有一种方法来实现我所需要的,或者我必须在“连接”处理程序中直接调用我的插件。
谢谢!
发布于 2021-09-03 19:40:16
https://stackoverflow.com/questions/69027347
复制相似问题