मुझे नहीं लगता कि आप एक पूर्व निर्धारित गति पर स्ट्रीम करने के लिए क्लाइंट को मजबूर कर सकते हैं, हालांकि आप पूरी प्रक्रिया की "औसत गति" को नियंत्रित कर सकते हैं।
var startTime = Date.now(),
totalBytes = ..., //NOTE: you need the client to give you the total amount of incoming bytes
curBytes = 0;
stream.on('data', function(chunk) { //NOTE: chunk is expected to be a buffer, if string look for different ways to get bytes written
curBytes += chunk.length;
var offsetTime = calcReqDelay(targetUploadSpeed);
if (offsetTime > 0) {
stream.pause();
setTimeout(offsetTime, stream.resume);
}
});
function calcReqDelay(targetUploadSpeed) { //speed in bytes per second
var timePassed = Date.now() - startTime;
var targetBytes = targetUploadSpeed * timePassed/1000;
//calculate how long to wait (return minus in case we actually should be faster)
return waitTime;
}
यह निश्चित रूप से छद्म कोड है, लेकिन आपको शायद बिंदु मिल जाएगा। एक और बेहतर और तरीका हो सकता है, जिस तरह से मुझे नहीं पता। ऐसे मामले में, मुझे उम्मीद है कि कोई और इसे इंगित करेगा।
ध्यान दें कि यह भी बहुत सटीक नहीं है, और आप औसत गति से अलग मीट्रिक चाहते हैं।
एक बहुत ही सरल तरीका है कि नियंत्रित करने के लिए। मुझे इसे समझना होगा। मुझे यकीन है कि मैं "बहुत अच्छा विचार नहीं" का पीछा कर रहा हूं लेकिन मैं देखना चाहता था कि इसका क्या होगा। – jcolebrand
@drachenstern, विचार पूरी तरह से मान्य है। अपलोड की गति सीमित करने के कई कारण हैं। उदाहरण के लिए, आप प्रीमियम योजनाएं प्रदान कर सकते हैं या आप अन्य कारणों से लंबे समय तक (विज्ञापनों की उच्च व्याख्या दर) के लिए अपनी साइट पर अपलोड करना चाहते हैं। मुझे यकीन नहीं है, लेकिन यह संसाधन उपयोग को और भी समान रूप से फैल सकता है और इस प्रकार प्रदर्शन में सुधार कर सकता है (लेकिन फिर से, मैं इस बारे में पूरी तरह से निश्चित नहीं हूं)। – Tom
~ उह, क्या? मैं वह लड़का हूं जिसने सवाल पूछा, वही कारण थे जिन पर मैं विचार कर रहा था। मेरा मतलब था कि यह नोड है, और इसका उद्देश्य तेज़ और स्केलेबल (एक ही समय में ऊपर और बाहर) होना है ताकि अपलोड की गति सीमित हो सके। इसके अतिरिक्त, मुझे नहीं पता कि मैं नोड में अपलोड की गति को सीमित कर सकता हूं। यह मौलिक रूप से एक विकल्प नहीं हो सकता है, और उपरोक्तों पर देरी स्वीकार करने का एकमात्र तरीका हो सकता है, जो यह उत्तर प्रदान करता है। – jcolebrand