Ich schreibe einen Code, der die Anzahl der Anfragen innerhalb von 10 Sekunden zählt und er nur die ersten 4 Anfragen erlaubt. Dies wird alle 10 Sekunden wiederholt. Mein Beispielcode ist angehängt. Mein Problem ist, während mehrere Anfragen gleichzeitig von verschiedenen Maschinen kommen, verhält es sich anders. Wahrscheinlich ist der Grund, dass ich die Variable nicht synchronisiert habe. Bitte antworten Sie, wie das geht.Wie man eine Variable um jeweils eine Anfrage erhöht in nodejs
var http = require("http");
var Repeat = require("repeat");
var fs= require("fs");
var express=require('express');
var a=0; /* This is the variable */
function send404PageNotFound(response){
console.log("in 404");
response.writeHead(404,{'content-type': 'text/plain'});
response.write("$04 Page not Found");
response.end();
}
function onRequest(request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
console.log('A request is coming from');
console.log(request.connection.remoteAddress);
a=a+1;
console.log(a);
if(a<5)
{
if(request.method== 'GET' && request.url=='/'){
response.writeHead(200,{'Content-Type': 'text/html'});
fs.createReadStream("./index.html").pipe(response);
}
else{
send404PageNotFound(response);
}
}
else
{
response.end('Server is busy\n');
}
}
setInterval(function(){ a=0; },10000);
http.createServer(onRequest).listen(8081);
"verhält es sich anders" ist diagnostisch nutzlos. Bitte beschreiben Sie genau, wie es sich verhält und wie es sich von dem unterscheidet, was Sie erwarten. "Ich habe die Variable nicht synchronisiert" - JS ist single-threaded, das Konzept der Synchronisation gilt nicht. – Amadan