首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InversifyJS注射express.Application

InversifyJS注射express.Application
EN

Stack Overflow用户
提问于 2018-10-22 17:13:21
回答 1查看 285关注 0票数 0

我正试图在我的一个速成项目中实现InversifyJS,除了websockets之外,一切都是完美的。WebsocketServer需要一个已构建的服务器实例,我将连接存储在express对象中,如下所示:

代码语言:javascript
复制
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构建它,连接的客户端在那里,但是我无法使用不版本化来注入对象。有人知道如何使用不可逆注入吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-23 03:23:21

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

代码语言:javascript
复制
const ninja = myContainer.get<Warrior>(TYPES.Warrior);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52934504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档