首页 > 解决方案 > 在 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
  }
);

标签: node.jsexpresswebsocketws

解决方案


我使用了错误的术语,这使得很难从文档中找到答案或帮助。我追求的功能是广播。

我设法通过在我所在的位置添加以下代码来实现我想要TODO

wsServer.clients.forEach(client => client.send('Webpack has recompiled'));

推荐阅读