2010-05-05 15 views
141

मैं Web Workers API का उपयोग करने के लिए वास्तविक दुनिया के दृश्यों की तलाश में हूं। खेल, ग्राफिक्स, क्रिप्टो -वेब श्रमिकों के लिए उपयोग-मामले क्या हैं?

+0

क्या वे मोबाइल/वेबकिट प्लेटफ़ॉर्म द्वारा समर्थित हैं? – dmp

+0

निश्चित रूप से पता नहीं है, लेकिन अनुमान लगाएंगे कि वे हैं। –

+6

@danp ब्राउज़र समर्थन: http://caniuse.com/webworkers –

उत्तर

114
  • John Resig (jQuery फेम) a bunch of interesting examples of using web workers here है।

  • एक और उपयोग वेब I/O है - दूसरे शब्दों में, पृष्ठभूमि में यूआरएल मतदान। इस तरह आप यूआई को मतदान परिणामों के लिए इंतजार नहीं करते हैं।

  • एक और व्यावहारिक उपयोग: Bespin में, वे वेब कर्मचारी वाक्य रचना हाइलाइटिंग, जो आप नहीं अपने कोड संपादन ब्लॉक करने के लिए आप अनुप्रयोग का उपयोग कर रहे, जबकि करना चाहते हैं का उपयोग कर रहे हैं।

  • Mozilla से: एक तरह से श्रमिक उपयोगी हैं कि आपके कोड को उपयोगकर्ता इंटरफ़ेस थ्रेड को अवरुद्ध किए बिना प्रोसेसर-गहन गणना करने की अनुमति दें।

    एक व्यावहारिक उदाहरण के रूप में, एक ऐप के बारे में सोचें जिसमें #s की एक बड़ी तालिका है (यह असली दुनिया है, बीटीडब्ल्यू - 2 साल पहले प्रोग्राम किए गए ऐप से लिया गया था)। आप इनपुट क्षेत्र के माध्यम से एक तालिका में एक # को बदल सकते हैं और विभिन्न कॉलम में अन्य नंबरों का एक गुच्छा काफी गहन प्रक्रिया में फिर से गणना की जाती है।

    पुराना वर्कफ़्लो था: # बदलें। जाओ कॉफी प्राप्त करें जबकि जावास्क्रिप्ट अन्य नंबरों में परिवर्तनों के माध्यम से crunches और वेब पेज 3 मिनट के लिए उत्तरदायी नहीं है - मैं इसे नरक और वापस अनुकूलित करने के बाद। कॉफी के साथ वापस जाओ। दूसरा # बदलें। कई बार दोहराएं। सहेजें बटन पर क्लिक करें।

    श्रमिकों के साथ नया वर्कफ़्लो हो सकता है: # बदलें। एक स्टेटस संदेश प्राप्त करें कि कुछ पुनः संयोजित किया जा रहा है लेकिन आप अन्य #s बदल सकते हैं। अधिक # एस बदलें। जब बदलते हैं, तो "सभी गणनाओं को पूरा करने के लिए स्थिति में परिवर्तन तक प्रतीक्षा करें, अब आप अंतिम #s की समीक्षा कर सकते हैं और सहेज सकते हैं"।

+5

ग्रेट लिंक! मैंने श्रमिकों के बारे में कभी नहीं सुना था ... mmm, श्रमिक। (जाने का समय एक लंबा, गर्म स्नान ...) –

+39

मुझे पता है कि यह दो साल का जवाब है, लेकिन मैं बस यह उल्लेख करना चाहता था कि आपको आइटम # 2 (मतदान यूआरएल) के लिए वेब श्रमिकों की आवश्यकता नहीं है। एक्सएचआर असीमित रूप से होता है और ब्लॉक नहीं करता है; एक अलग थ्रेड पर एक्सएचआर अनुरोध चलाने की कोई ज़रूरत नहीं है। (बेशक, एक आधुनिक ऐप में आप मतदान के बजाए वेबसाकेट्स का उपयोग करना चाहते हैं।) – josh3736

+4

@ josh3736 - आप सही हैं लेकिन अब मैं उत्सुक हूं कि क्या कई समांतर एक्सएचआर एएनसीसी अनुरोध करने से ब्राउज़र दुखी हो सकता है?साथ ही, आपको XHR प्रतिक्रियाओं को संसाधित करने के लिए स्थानीय संसाधनों की आवश्यकता है जहां श्रमिक उपयोगी हो सकते हैं। – DVK

29

मैंने ब्राउज़र से सर्वर पर बड़ी मात्रा में डेटा भेजने के लिए उनका उपयोग किया है। जाहिर है, आप इसे नियमित AJAX कॉल के साथ कर सकते हैं, लेकिन यदि यह प्रति होस्टनाम के मूल्यवान कनेक्शनों में से एक लेता है। साथ ही, यदि उपयोगकर्ता इस प्रक्रिया के दौरान एक पृष्ठ संक्रमण करता है (जैसे एक लिंक क्लिक करता है), तो पिछले पृष्ठ से आपकी जावास्क्रिप्ट ऑब्जेक्ट्स दूर हो जाती हैं और आप कॉलबैक को संसाधित नहीं कर सकते हैं। जब एक वेब कर्मचारी का उपयोग किया जाता है, तो यह गतिविधि बैंड से बाहर होती है, इसलिए आपके पास एक बेहतर गारंटी है कि यह पूरा हो जाएगा।

5

एक और उपयोग मामला:

Compressing/पृष्ठभूमि में फ़ाइलों को डी-संपीड़ित करने, अगर आप छवियों और अन्य मीडिया फ़ाइलों कि संपीड़ित प्रारूप में सर्वर से बदला जा सकता है की एक बहुत कुछ है।

+30

यह जावास्क्रिप्ट में नहीं होना चाहिए। छवियों को पहले से ही संकुचित (पीएनजी, जेपीईजी) छवि डेटा कुशलतापूर्वक संपीड़ित करने के लिए डिज़ाइन किए गए एल्गोरिदम का उपयोग कर रहे हैं। शीर्ष पर संपीड़न की एक और परत फेंकने से वास्तव में * डेटा के आकार में वृद्धि हो सकती है। अन्य प्रकार के डेटा (जैसे एक बड़ी JSON फ़ाइल) के लिए, मानक HTTP gzipping का उपयोग कर ब्राउज़र द्वारा संपीड़न को संभाला जाना चाहिए। ** यदि आप जावास्क्रिप्ट में संपीड़न कर रहे हैं, तो आप शायद * गलत कर रहे हैं * ** – josh3736

+10

मैं कुछ उपयोगकर्ताओं को उपयोग के मामले को अयोग्य घोषित करता हूं, लेकिन यहां मेरा कहना है। एक शक्तिशाली दस्तावेज़ संपादक की तरह एमएस शब्द जैसे अनुप्रयोग पर विचार करें जिसके माध्यम से आप छवियों, संगीत फ़ाइलों, डेटा, एक्सेल शीट इत्यादि को एक फ़ाइल में एम्बेड कर सकते हैं। और मान लें कि आपके पास वेब आधारित क्लाइंट और डेस्कटॉप क्लाइंट और आईओएस/एंड्रॉइड क्लाइंट है। इस तरह के उपयोग के मामले के लिए, आप सभी फ़ाइल सामग्री को ज़िप फ़ाइल में संग्रहीत कर सकते हैं और फिर प्रत्येक क्लाइंट पर अनजिप कर सकते हैं। – sbr

+0

मुझे आशा है कि उपर्युक्त टिप्पणी समझ में आती है। अगर आप इसे हासिल करने के बेहतर तरीके सोच सकते हैं तो कृपया अपने सुझाव दें। – sbr

संबंधित मुद्दे