2015-09-05 9 views
5

मेरी वेबसाइट वेब सॉकेट का उपयोग कर रीयलटाइम डेटा की स्ट्रीम से कनेक्शन बनाती है। डेटा की स्ट्रीम सिर्फ JSON संदेशों की एक श्रृंखला है। वेबसाइकिल हैंडलर में, जब मुझे कोई संदेश प्राप्त होता है, तो मैं JSON को पार्स करता हूं और ग्राफ़ में कुछ डेटा पॉइंट जोड़ता हूं।क्या वेबवर्कर पर वेबस्केट डालना समझ में आता है?

मेरा प्रश्न है: क्या वेबसाकेट को अपने स्वयं के कार्यकर्ता धागे पर ले जाने के लिए यह समझ में आता है?

पहले मैं सोच रहा था कि मैं जेएसओएन को अपने धागे पर पार्स कर सकता हूं और UI थ्रेड को deserialized ऑब्जेक्ट भेज सकता हूं जो कुछ समय बचा सकता है। दुर्भाग्यवश ऐसा लगता है कि पोस्ट मैसेज के लिए मुझे स्ट्रिंग भेजने की आवश्यकता है। इसलिए जेएसओएन को अपने धागे पर पार्स करने में कोई फायदा नहीं है।

ऐसा लगता है कि वेब सॉकेट डेटा को अपने धागे पर प्राप्त करने में कोई फायदा नहीं होगा - मैं चाहता हूं कि ब्राउज़र पहले से ही अपने धागे पर तार से डेटा प्राप्त कर रहा है और मेरी जावास्क्रिप्ट वितरित कर रहा है उचित समय पर कॉलबैक।

तो, तथ्य यह है वहाँ किसी भी पोस्ट प्रोसेसिंग वास्तविक समय डेटा पर किया जा रहा प्राप्त नहीं है कि दिया - यह ज्यादातर सीधे यूआई के लिए है - यह मतलब है एक वेब कार्यकर्ता पर एक WebSocket कनेक्शन डाल करने के लिए?

धन्यवाद! एंड्रयू

+1

IMHO यह केवल मतलब होगा यदि आप कुछ गाढ़ा परिणाम मुख्य थ्रेड पर वापस भेजने से पहले महत्वपूर्ण (सीपीयू भारी) JSON संदेशों पर प्रसंस्करण कर रहे थे देखें। – Alnitak

+1

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

उत्तर

2

एक उदाहरण है जहाँ मैं एक वेब कार्यकर्ता में WebSocket निपटने डाल करने के लिए आवश्यक था जब मैं (जब ऑडियो स्ट्रीमिंग प्रतिपादन वेब ऑडियो API का उपयोग कर खिलाया जा रहा से अपने कस्टम NodeJS सर्वर) संवेदनशील समय में ब्राउज़र धागा रुकावट से बचने के लिए की जरूरत है। हर बार जब ब्राउज़र-पक्ष वेबसाकेट ऑडियो डेटा का संदेश प्राप्त करता है तो यह ब्राउज़र प्रसंस्करण को बाधित कर देगा, जो ठीक है यदि आपके ऐप में ऐसी कोई विस्तारित संवेदनशील समय अवधि नहीं है। वेबवर्कर में वेबस्केट प्रबंधन डालने से मैंने वेब ऑडियो एपीआई इवेंट लूप में बाधा डालने से परहेज किया। वेबवर्कर websocket आने वाले डेटा को संभाल लेगा जो इसे वेबवर्कर साइड सर्कुलर कतार में डाल देता है। ब्राउजर साइड वेब ऑडियो एपीआई इवेंट लूप इस वेबवर्कर प्रबंधित कतार में अपने स्वयं के इवेंट लूप डाउन पार्ट के दौरान टैप करेगा, इस प्रकार इवेंट लूप में किसी भी रुकावट से परहेज करेगा।

इसी रेपो https://github.com/scottstensland/websockets-streaming-audio

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