node.js - 在 webpack 重新编译时触发 websocket 服务器发送到客户端
问题描述
我有一个快速服务器,我正在尝试在其中加入一个 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'));
推荐阅读
- hyperledger - 澄清 Hyperledger-indy 和 soverin 基金会项目?
- javascript - Android Chrome 中的 Web Speech API 问题
- php - Laravel Auth 返回不同的数据
- operating-system - 操作系统线程和锁定问题
- apache-flink - Flink:关于 flink 检查点和保存点的查询
- intellij-idea - Intellij 的 Angular 和 Type 脚本支持插件
- c# - Stripe Payment:System.Net.WebException:请求被中止:无法创建 SSL/TLS 安全通道
- python - 为什么在相同的环境下结果会不同?
- bitbucket - 在 Bitbucket 上为多个存储库托管静态网站
- python - 如何从 python OpenCV Thresholding 获得更好的结果?