繁体   English   中英

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

[英]How to run multiple node.js servers

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

我应该提一下应用程序是在Raspberry Pi上运行的。 网站加载时间不是那么关键,但数据发布是。

有没有办法运行node.js服务器,以便它们不会受到彼此负载的影响?

现在,Web服务器位于由节点运行的主app.js文件中,数据服务器是Web服务器所需的模块。 像这样的东西:

app.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;

数据server.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;

更新

事实证明,这是我的数据库查询,它持有节点,因此它无法发出,因为发射功能正在等待数据库空闲。

您应该对常规HTTP流量和websocket流量使用相同的端口和相同的节点进程。 它可以最大限度地降低对树莓派的性能影响。 示例:

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');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM