InversifyJS 注入 express.Application
InversifyJS injecting express.Application
我正在尝试在我的一个 Express 项目中实施 InversifyJS,除了 websockets 之外,一切都运行良好。 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 注入吗?
根据上面的代码。您需要从对象定位器 - 容器中检索对象。在套接字事件中,您可以访问定义容器的父闭包。因此,以常见的方式检索您需要的任何容器
const ninja = myContainer.get<Warrior>(TYPES.Warrior);
@inject - 它是一个帮助程序,用于检索服务并将其绑定到包装的 class(两个操作)的 属性来自装饰者 @injectable。这里不需要。
我正在尝试在我的一个 Express 项目中实施 InversifyJS,除了 websockets 之外,一切都运行良好。 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 注入吗?
根据上面的代码。您需要从对象定位器 - 容器中检索对象。在套接字事件中,您可以访问定义容器的父闭包。因此,以常见的方式检索您需要的任何容器
const ninja = myContainer.get<Warrior>(TYPES.Warrior);
@inject - 它是一个帮助程序,用于检索服务并将其绑定到包装的 class(两个操作)的 属性来自装饰者 @injectable。这里不需要。