Node.js 请教一个动态更新的问题

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

https://github.com/janishar/nodejs-backend-architecture-typescript 比如这个项目中, Install using Docker Compose [Recommended Method]

Clone this repo. Make a copy of .env.example file to .env. Make a copy of keys/private.pem.example file to keys/private.pem. Make a copy of keys/public.pem.example file to keys/public.pem. Make a copy of tests/.env.test.example file to tests/.env.test. Install Docker and Docker Compose. Find Instructions Here. Execute docker-compose up -d in terminal from the repo directory. You will be able to access the api from http://localhost:3000 If having any issue then make sure 3000 port is not occupied else provide a different port in .env file. If having any issue then make sure 27017 port is not occupied else provide a different port in .env file.

那我每次更新项目文件,我发现每次都得 docker rebuid 然后 restart 更新,有没有自动动态更新的方法


Node.js 请教一个动态更新的问题

9 回复

你这要求已经超出 docker 的使用规范了吧


你是用 docker 还是 docker compose ?如果是 docker compose 并且是 v2 版的,可以用 docker compose alpha watch 命令。
如果是开发的话,或者不用 docker ,看它的 package.json 里有 watch 的 script ,可以直接用 npm run watch来开发。

本地开发直接用宿主机的 nodejs 跑 nodemon 就好了

部属的时候才构建 docker 镜像然后推到服务器上。

用的 docker compose ,谢谢我试试 docker compose alpha watch 命令

对 node 不是太熟,所以想怎么省事方便怎么来

你这已经是要求对文件监控了

方便就是 nodemon

https://github.com/virtual-less/vaas-framework
我这个框架其实就实现了动态更新,有点类似 PHP

在Node.js中实现动态更新通常涉及实时数据处理和更新,可以通过WebSocket、HTTP长轮询等技术来实现。下面是一个使用WebSocket的简单示例,它展示了如何动态更新数据。

首先,确保你已经安装了ws库,这是一个用于Node.js的WebSocket服务器实现。你可以通过npm安装它:

npm install ws

然后,创建一个简单的WebSocket服务器:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    console.log('Client connected');

    // 模拟数据更新
    setInterval(() => {
        const data = {
            time: new Date().toLocaleTimeString(),
            message: 'This is a dynamic update!'
        };
        ws.send(JSON.stringify(data));
    }, 1000);

    ws.on('message', (message) => {
        console.log(`Received: ${message}`);
    });

    ws.on('close', () => {
        console.log('Client disconnected');
    });
});

console.log('WebSocket server is running on ws://localhost:8080');

客户端可以使用原生的WebSocket API来连接这个服务器并接收动态更新:

const ws = new WebSocket('ws://localhost:8080');

ws.onopen = () => {
    console.log('Connected to WebSocket server');
};

ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    console.log(`Time: ${data.time}, Message: ${data.message}`);
};

ws.onclose = () => {
    console.log('Disconnected from WebSocket server');
};

这个示例展示了如何设置一个简单的WebSocket服务器来发送动态更新的数据,以及一个客户端来接收这些数据。

回到顶部