【问题标题】:InversifyJS injecting express.ApplicationInversifyJS 注入 express.Application
【发布时间】:2018-12-23 11:23:21
【问题描述】:

我正在尝试在我的一个 Express 项目中实现 InversifyJS,除了 websocket 之外,一切都运行良好。 WebsocketServer 需要一个构建的服务器实例,我将连接存储在 express 对象中,如下所示:

const port = 3000;
await container.loadAsync(bindings);
const app = new InversifyExpressServer(container);
const WebSocketServer = require('ws').Server;
const server = app.build();

server.listen(port, () => {
    console.log(`Server running at http://127.0.0.1:${port}/`)
});

const wss = new WebSocketServer({server: server, path: "/hereIsWS"});
wss.on("connection", function(ws){
    let id = Math.random();
    CLIENTS[id] = ws;

    ws.on('close', function() {
        delete CLIENTS[id];
        server.set("clients", CLIENTS);
    });
    // console.log("app", app);
    server.set("clients", CLIENTS);
});

现在我有一个管理消息的 WebsocketService,我曾经在构造函数中使用参数 private app: express.Application 构建它,并且连接的客户端在那里,但我无法使用 inversify 注入对象。有人知道如何使用 inversify 进行注入吗?

【问题讨论】:

    标签: node.js express inversifyjs


    【解决方案1】:

    根据上面的代码。您需要从对象定位器 - 容器中检索对象。在套接字事件中,您可以访问定义容器的父闭包。因此,以通用方式检索您需要的任何容器

    const ninja = myContainer.get<Warrior>(TYPES.Warrior);
    

    @inject - 它是一个帮助器,用于检索服务并将其绑定到由装饰器 @injectable 包装的类的属性(两个操作)。这里不需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2017-10-10
      • 2018-08-06
      • 2023-02-16
      • 1970-01-01
      • 2017-04-07
      相关资源
      最近更新 更多