2012-07-09 7 views
5

हैलो मैं फ़ाइलों को स्थानांतरित करने की कोशिश कर रहा हूं। मेरे पास फाइलें बाइनरी में कनवर्ट करने और सी ++ के साथ नेटवर्क पर स्थानांतरित करने के कुछ प्रोग्राम हैं। मैं सोच रहा था कि क्या मैं जावास्क्रिप्ट और websockets के साथ फ़ाइलों को स्थानांतरित करने में सक्षम होगा? जावास्क्रिप्ट में मेरे सी ++ प्रोग्राम को एकीकृत करने के तरीके पर कोई उदाहरण सराहना की जाएगी। धन्यवाद।websockets के माध्यम से जावास्क्रिप्ट के साथ फ़ाइलों को स्थानांतरित करना

+0

यदि यह संभव हो तो मुझे भी रूचि है। – DasBoot

उत्तर

7

जावास्क्रिप्ट दो नए द्विआधारी प्रकार है: आपके द्वारा लिखा गया सरणियों (arraybuffers) और Blobs (मूल रूप से फ़ाइलें)।

वेबसाकेट टाइप किए गए सरणी और ब्लब्स भेजने और प्राप्त करने का समर्थन करते हैं।

वेबस्केट्स का उपयोग करके दो ब्राउज़रों के बीच डेटा स्थानांतरित करने के लिए आपको उन दोनों के लिए एक सर्वर की आवश्यकता होगी (ब्राउज़र वेबसाकेट समर्थन केवल इस बिंदु पर क्लाइंट है)।

यदि आपके पास सी ++ में मौजूदा सर्वर है जो फ़ाइल परिवहन को संभालता है तो आपको इसे आसानी से वेबसॉकेट सर्वर समर्थन जोड़ने में सक्षम होना चाहिए। एक WebSocket सर्वर से कनेक्शन स्थापित करने के लिए http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

जावास्क्रिप्ट में आप कुछ इस तरह करते हैं:: आप इस पेज पर WebSocket क्लाइंट और सर्वर कार्यान्वयन पा सकते हैं

ws = new WebSocket("ws://100.101.102.103"); 

भेजने() विधि समर्थन सामान्य तार, आपके द्वारा लिखा गया सरणी या ब्लब्स। टाइप किए गए सरणी और ब्लब्स भेजना परिणामस्वरूप सर्वर द्वारा प्राप्त बाइनरी फ्रेम (opcode = 2) के रूप में प्राप्त होगा।

ws.send(myTypedArray); 

संदेश प्राप्त करने के लिए आप संदेश हैंडलर रजिस्टर:

ws.onmessage = function (evt) { 
    console.log("Got ws message: " + evt.data); 
}; 

सर्वर एक द्विआधारी फ्रेम/संदेश भेजता है तो घटना के onmessage डेटा संपत्ति या तो एक टाइप सरणी या के आधार पर ब्लॉब में शामिल होंगे बाइनरी टाइप प्रकार की सेटिंग। आप इस प्रकार प्राप्त होने वाले बाइनरी डेटा के प्रकार को बदल सकते हैं:

ws.binaryType = "blob"; // or "arraybuffer" 
1

जो आप करने की कोशिश कर रहे हैं वह संभव नहीं है। वेबसॉकेट केवल क्लाइंट मोड में ही काम कर सकता है; यह किसी अन्य वेबसाकेट क्लाइंट (जैसे एक और ब्राउज़र) से कनेक्शन स्वीकार नहीं कर सकता है।

वेबसॉकेट क्लाइंट को सर्वर के माध्यम से एक दूसरे के साथ हुक करना संभव है, लेकिन उस समय यह वास्तव में सहकर्मी-सह-सहकर्मी नहीं है, इसलिए मुझे यकीन नहीं है कि यह वास्तव में उपयोगी या दिलचस्प है या नहीं।

देखें: Will Websockets allow a server to run in the browser?

+1

धन्यवाद, अगर आप सर्वर के माध्यम से इसे कैसे करें इस पर उदाहरण प्रदान कर सकते हैं तो इसकी सराहना की जाएगी। =) – DasBoot

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