gpt4 book ai didi

node.js - 如何运行多个 node.js 服务器

转载 作者:搜寻专家 更新时间:2023-10-31 23:12:41 25 4
gpt4 key购买 nike

我有两个运行在不同端口上的 Express 服务器。第一个服务器(Web 服务器)提供一个网站,第二个服务器(数据服务器)使用 socket.io 每 100 毫秒发送一次数据。当我在浏览器中打开网站时,数据按预期显示。但是,当我随后在第二个浏览器中打开该网站时,第一个浏览器中发出的所有数据都会显着变慢,直到第二个浏览器完成加载该网站。

我应该提一下,该应用程序是在 Raspberry Pi 上运行的。网站加载时间并不重要,但数据排放很重要。

有没有什么方法可以运行 node.js 服务器,这样它们就不会受到彼此负载的影响?

现在,网络服务器位于由 Node 运行的主 app.js 文件中,数据服务器是网络服务器所需的模块。像这样:

应用程序.js:

var express = require('express');
var data = require('data-server.js');

var app = express();

// Web server setup and handling (mostly Express defaults)

app.listen(3000);

module.exports = app;

数据服务器.js:

var app = require('express')();
var server = require('http').Server(app).listen(3001)
var io = require('socket.io')(server);

// Socket.io code that emits data every 100 ms

module.exports = io;

更新

原来是我的数据库查询一直卡在 Node 上,所以它无法发出,因为发出函数正在等待数据库空闲。

最佳答案

您应该为常规 HTTP 流量和 websocket 流量使用相同的端口和相同的 Node 进程。它会最大限度地减少对您的树莓派的性能影响。示例:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
res.sendfile('index.html');
});

io.on('connection', function(socket){
console.log('a user connected');
});

http.listen(3000, function(){
console.log('listening on *:3000');
});

关于node.js - 如何运行多个 node.js 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com