[英]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.