我正试图在我的一个速成项目中实现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构建它,连接的客户端在那里,但是我无法使用不版本化来注入对象。有人知道如何使用不可逆注入吗?
发布于 2018-12-23 03:23:21
根据上面的代码。您需要从对象定位器容器中检索对象。在套接字事件中,您可以访问定义容器的父闭包。因此,以一种常见的方式检索所需的任何容器。
const ninja = myContainer.get<Warrior>(TYPES.Warrior);@inject -它是一个帮助器,它检索服务并将其绑定到由装饰器@injectable包装的类的属性(两个操作)。你不需要它在这里。
https://stackoverflow.com/questions/52934504
复制相似问题