我使用NodeJS,ExpressJS和路由控制器实现了一个简单的REST API。我还实现了一个与REST API一起运行并使用WS的基本WebSocket服务器。
const app = express();
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true}));
useExpressServer(app, {
controllers: [
UserController
]
});
const server = app.listen(21443, (err: Error) => {
console.log("listening on port 21443");
});
const wss = new WebSocket.Server({server});
wss.on("connection", (ws: WebSocket) => {
ws.on("message", (message: string) => {
console.log("received: %s", message);
ws.send(`Hello, you sent -> ${message}`);
});
ws.send("Hi there, I am a WebSocket server");
});
我的问题是如何访问当前运行的WS实例,以便能够从我的控制器方法send
或broadcast
。我有许多运行长进程的POST
方法,因此将HTTP 200返回给客户端,然后我希望send
或broadcast
连接到所有连接的WS客户端。
从我的控制器类中访问WebSocket.Server
实例的正确方法是什么?