簡體   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