2012-09-01 23 views
19

के बीच बाइनरी बफर साझा करना node.js और ब्राउज़र में बाइनरी डेटा वाले ब्राउज़र के बीच बफर साझा करने का एक मुद्दा है। मैं Socket.io के साथ एक परिवहन परत के रूप में बहुत खुश हूं लेकिन मुद्दा यह है कि ब्राउज़र के लिए Buffer class का कोई पोर्टिंग नहीं है। ऐसा कुछ भी नहीं है जो मुझेNode.js सर्वर और ब्राउज़र

मैं भी binary.js पर आया हूं और मैं सोच रहा था कि सॉकेट.ओ को परिवहन परत और बाइनरी.जेएस डेटा माध्यम के रूप में जोड़ने के लिए एक अच्छा तरीका है या नहीं। मैंने यह question भी देखा, जो कि विषय पर है लेकिन वास्तव में इस मुद्दे को हल नहीं करता है।

मुझे पता है कि socket.io जोड़ा बाइनरी समर्थन है लेकिन मुझे इस विषय पर कोई दस्तावेज नहीं मिला है।

अद्यतन:

ऐसा लगता है कि binary.js समाधान नहीं होगा। मूलभूत आवश्यकता जो मैं चाहता हूं वह वही क्षमताओं को साझा करना है जो बफर ब्राउज़र के साथ नोड में है।

मेरे जरूरतों दो बातें से मिलकर बनता है:

  1. दोनों सर्वर और ब्राउज़र में एक ही तरीके से बफर संभाल।

  2. बाइनरी डेटा का समर्थन करते हैं।

मैं शायद ऐरे बफर का उपयोग करूंगा।

संपादित करें: चूंकि node.js V8 पर चलने के बाद से आप ArrayBuffer का उपयोग कर सकते हैं। ऐसा लगता है जैसे समस्या हल हो गई है। फिर भी, जो मुझे पता है, उससे नोड लोगों ने फैसला किया कि बफर मॉड्यूल बनाने और सी द्वारा निर्मित सी बाइंडिंग में इसे प्रबंधित करने का अच्छा विचार है (रायन दहल द्वारा दी गई बातचीत से)। मुझे लगता है कि नेटवर्क पर बफरिंग कैसे किया जाता है इसके साथ यह करना है। इसका मतलब है कि सर्वर और ब्राउज़र के बीच साझा करने के लिए ArrayBuffer अभी भी एक अच्छा डेटा माध्यम नहीं है।

+1

मुझे समझ में नहीं आता कि वास्तव में समस्या क्या है। आप वास्तव में किस कार्यक्षमता में रुचि रखते हैं जो ब्राउज़र में मौजूद नहीं है? –

+0

मेरी ज़रूरतों में दो चीजें हैं: 1. सर्वर और ब्राउज़र दोनों में बफर को उसी तरह से संभाल लें। 2. समर्थन बाइनरी डेटा। – qballer

+0

डेटाव्यू और ऐरेबफर – Chiguireitor

उत्तर

8

browser-buffer ब्राउज़र में नोड के Buffer एपीआई को अनुकरण करता है।

यह Uint8Array द्वारा समर्थित है, इसलिए browser support स्केची है।

+0

यह वह उत्तर है जिसे मैं ढूंढ रहा हूं, बात यह है कि यह अभी भी बहुत अस्थिर है। – qballer

+0

हाँ, परियोजना में बहुत कम गतिविधि है; ऐसा लगता है कि यह किसी का प्रयोगात्मक कोड है। मैं इसे एक अच्छा प्रारंभिक बिंदु के रूप में उपयोग करूंगा - आपको फोर्क करना होगा और कोड को बेहतर बनाना होगा। – josh3736

2

जावास्क्रिप्ट के तारों में निर्मित आंतरिक रूप से विस्तृत वर्णों का उपयोग करते हैं। इसलिए वे प्रत्येक चरित्र स्थिति में 0 से 255 तक आसानी से एक मान स्टोर कर सकते हैं। यह एक जावास्क्रिप्ट भाषा सुविधा है, इसलिए इसे ब्राउज़र में या node.js में समान कार्य करना चाहिए।

आप charCodeAtfromCharCode उपयोग कर सकते हैं एक स्ट्रिंग में किसी विशिष्ट स्थिति का मान प्राप्त करने के और 255

करने के लिए (है कि आप एक स्ट्रिंग के लिए जोड़ सकते हैं) एक चरित्र 0 से एक मूल्य के साथ बनाने के लिए आप उपयोग कर सकते हैं इस फ़ॉर्म में डेटा में हेरफेर करने के लिए विभिन्न स्ट्रिंग फ़ंक्शंस। आप इस "\x00\x12\x34\x56" जैसे जावास्क्रिप्ट स्ट्रिंग स्थिरांक का उपयोग कर स्थिर बना सकते हैं।

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