在 webpack 重新编译时触发 websocket 服务器发送给客户端
Trigger websocket server to send to the client on webpack recompile
我有一个快速服务器,我想在其中加入一个 websocket。我在监视模式下使用 webpack 和 运行。每次webpack修改后重新编译我都想在websockt上发消息
我试过让 websocket 服务器监听一个事件,然后在 webpack 重新编译时发出该事件,但没有成功。我无法获得 ws
的句柄来调用 send
函数。
下面是我的服务器代码的简化版本。任何帮助将不胜感激。
const express = require("express");
const https = require("https");
const webpack = require("webpack");
const { Server: WebSocketServer } = require("ws");
const app = express();
// Create HTTPS server using the certificate
const server = https
.createServer(
{
key,
cert,
},
app
)
.listen(443);
// Use external server as per https://www.npmjs.com/package/ws#external-https-server
const wsServer = new WebSocketServer({ server });
wsServer.on("connection", (socket, request) => {
console.log("Client has connected");
});
// Run webpack --watch
webpack(configuration).watch(
{
/* watchOptions */
},
(err, stats) => {
console.log(
stats.toString({
chunks: false,
colors: true,
})
);
logInColour("green", "✅ Server is up and running");
// TODO: Send a message using the websocket
}
);
我使用了错误的术语,导致很难从文档中找到答案或帮助。我想要的功能是广播。
我通过在 TODO
的位置添加以下代码设法实现了我想要的
wsServer.clients.forEach(client => client.send('Webpack has recompiled'));
我有一个快速服务器,我想在其中加入一个 websocket。我在监视模式下使用 webpack 和 运行。每次webpack修改后重新编译我都想在websockt上发消息
我试过让 websocket 服务器监听一个事件,然后在 webpack 重新编译时发出该事件,但没有成功。我无法获得 ws
的句柄来调用 send
函数。
下面是我的服务器代码的简化版本。任何帮助将不胜感激。
const express = require("express");
const https = require("https");
const webpack = require("webpack");
const { Server: WebSocketServer } = require("ws");
const app = express();
// Create HTTPS server using the certificate
const server = https
.createServer(
{
key,
cert,
},
app
)
.listen(443);
// Use external server as per https://www.npmjs.com/package/ws#external-https-server
const wsServer = new WebSocketServer({ server });
wsServer.on("connection", (socket, request) => {
console.log("Client has connected");
});
// Run webpack --watch
webpack(configuration).watch(
{
/* watchOptions */
},
(err, stats) => {
console.log(
stats.toString({
chunks: false,
colors: true,
})
);
logInColour("green", "✅ Server is up and running");
// TODO: Send a message using the websocket
}
);
我使用了错误的术语,导致很难从文档中找到答案或帮助。我想要的功能是广播。
我通过在 TODO
wsServer.clients.forEach(client => client.send('Webpack has recompiled'));