2012-05-02 6 views
7

मैं एप्लिकेशन पर काम कर रहा हूँ जहाँ मैं एक सी ++ आवेदन और एक जावास्क्रिप्ट वेब अनुप्रयोग के बीच संदेश उत्तीर्ण करने की आवश्यकता में कार्यान्वित किया जाता।है वहाँ एक उच्च स्तरीय अंतर-प्रक्रिया संचार एपीआई कि दोनों सी ++ और जावास्क्रिप्ट

निश्चित रूप से मैं किसी भी भाषा में सॉकेट कोड अपने आप को लिख सकता है और जरूरत पड़ने पर मैंने पहले भी यह किया है।

क्या मैं सच में चाहते हैं, एक उच्च स्तरीय संदेश पोस्टिंग या संदेश यह है कि मेरे लिए बहुत काम करता है एपीआई कतार है। क्या किसी को ऐसी एपीआई पता है?

मैं बर्फ पर ध्यान दिया है, और यह जावास्क्रिप्ट बाइंडिंग के लिए प्रकट नहीं होता। मैंने बूस्ट संदेश कतार को भी देखा है, लेकिन यह केवल चीजों के सी ++ पक्ष को पूरा करता है। यदि आवश्यक हो तो मैं इन तकनीकों में से किसी एक के लिए अपनी खुद की जावास्क्रिप्ट बाइंडिंग रोल कर सकता हूं।

अपडेट: क्षमा करें, इससे पहले इसका उल्लेख करना चाहिए था, मैं इसे ब्राउज़र में चलाने के लिए चाहता हूं।

अधिक पूर्ण कहानी क्या मैं चाहता हूँ कि एक सी ++ आवेदन के लिए कॉन्फ़िगर और प्रदर्शन लॉगिंग करने के लिए प्रयोग किया जाता है एक साधारण ब्राउज़र आधारित अनुप्रयोग है देने के लिए।

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

भी: मैं वेब ब्राउज़र के मामले में पोर्टेबिलिटी की परवाह नहीं कर रहा हूँ। उदाहरण के लिए यदि उच्च स्तरीय आईपीसी जावास्क्रिप्ट लाइब्रेरी है जो केवल क्रोम में काम करती है, तो मैं इससे खुश रहूंगा।

+0

क्या यह ब्राउज़र में है, या सर्वर साइड जेएस? क्या पर्यावरण? – joshp

+1

आपके विकल्प मूल रूप से JSON/HTTP, XML/HTTP, या WebSockets का उपयोग कर कुछ हैं। –

उत्तर

2

मुझे एक समाधान मिला है जो मेरी आवश्यकताओं को पूरा करता है। यह बिल्कुल सही नहीं है लेकिन मुझे लगता है कि यह काफी अच्छी तरह से काम करता है।

कुछ लोगों ने HTTP और AJAX का उपयोग करने का सुझाव दिया। यह एक उपयोगी विचार साबित हुआ और कुछ प्रोटोटाइप के बाद मुझे लगता है कि यह मेरी मूलभूत आवश्यकताओं को हल करता है।

अधिक विशिष्ट होने के लिए मैं अपने सी ++ एप्लिकेशन में एम्बेडेड मोंगोस HTTP सर्वर का उपयोग कर रहा हूं और मैं सर्वर से डेटा खींचने के लिए jQuery AJAX फ़ंक्शन का उपयोग कर रहा हूं। JQuery क्लाइंट लगातार नए डेटा के लिए सर्वर को चुनाव करता है, विशेष रूप से कुशल नहीं, लेकिन मुझे लगता है कि यह मेरे लिए पर्याप्त काम करेगा।

एक बार मेरा कार्यान्वयन पूरा होने के बाद मैं एक लेख लिखूंगा जिसमें यह विस्तार से किया जाए और फिर मैं यह उत्तर अपडेट करूंगा।

+0

यदि कोई दिलचस्पी लेता है, तो मैंने इस प्रश्न/उत्तर में जिस परियोजना के बारे में बात की थी, उसके बारे में एक लेख लिखा है। http://www.codeproject.com/Articles/448756/Introducing-Investigo-Using-a-Proxy-DLL-and-embedd –

4

बस अपने प्रश्न का उत्तर देने के लिए: नहीं, बॉक्स से बाहर ईसीएमएस्क्रिप्ट में कोई आईपीसी लागू नहीं है।

लेकिन आपने वास्तव में पहले से ही आपको प्रश्न का उत्तर दिया है। यदि आप ब्राउज़र में चलने वाले जावास्क्रिप्ट के साथ संवाद करने का प्रयास करते हैं, तो आपको वास्तव में किसी भी दिशा में पाइप दिनांक से (वेब-) सॉकेट कनेक्शन का उपयोग करना चाहिए। बेशक आप सी ++ में एक साधारण HTTP सर्वर लिख सकते हैं, लेकिन मुझे लगता है कि ओवरकिल है और इसमें द्वि-दिशात्मक सॉकेट की क्षमता नहीं है।

स्क्रैच से सी ++ में वेब-सॉकेट कनेक्शन को लागू करने के लिए अभी भी कुछ काम है (चश्मा लंबे समय तक प्रवाह में थे), लेकिन मुझे लगता है कि कुछ लाइब्रेरी पहले से ही बाहर हैं।

यदि आप node.js के साथ संवाद करने की कोशिश कर रहे हैं, तो यह असली सॉकेट/पाइप का उपयोग करके लगभग एक छोटा सा कार्य है।

+0

बॉक्स के बाहर websockets (आईपीसी की एक विधि) शामिल नहीं है (कम से कम कुछ ब्राउज़रों में)? –

+0

XMLHttpRequest आईपीसी की परिभाषा को कैसे संतुष्ट नहीं करता है? आरपीसी इंटरफ़ेस के लिए यह भी एक अच्छा, स्पष्ट आधार है। – Potatoswatter

+0

@jAndy क्या यह अभी भी सी ++ में वेब-सॉकेट को स्क्रैच से लागू करने के लिए कुछ काम है? क्या आपके पास कोई संसाधन है जो आप अनुशंसा करते हैं और इसे प्राप्त करने में उपयोगी होंगे? – Greg

4

जावास्क्रिप्ट के साथ मुझे लगता है कि आप इसे ब्राउज़र में चला रहे हैं? इस मामले में आपके सी ++ एप्लिकेशन को एक वेबसर्वर और किसी प्रकार का JSON आधारित webservice प्रदान करने की आवश्यकता है जिसे आप कॉल कर सकते हैं। जावास्क्रिप्ट पक्ष पर आप उस webservice के साथ संवाद करने के लिए बस AJAX का उपयोग करें।

एक विकल्प websockets होगा जो हालांकि C++ पक्ष पर लागू करने के लिए थोड़ा कठिन हो सकता है।

+0

हाँ इसे ब्राउज़र में चला रहा है। वेब सॉकेट वह है जो मैं सोच रहा हूं कि मैं जावास्क्रिप्ट में उपयोग करूँगा। –

+0

यह मुश्किल हो सकता है। आप जिस ब्राउज़र संस्करण का समर्थन करना चाहते हैं उसके आधार पर आपको फ़ॉलबैक लागू करने की भी आवश्यकता है क्योंकि उनमें से सभी को पूर्ण वेबसाईट समर्थन नहीं है। असल में आपको http://socket.io की आवश्यकता होगी लेकिन नोडजेएस के बजाय सी ++ के लिए। Webservice जावास्क्रिप्ट के अलावा हर जगह और ग्राहकों के साथ भी काम करेगा। – Daff

0

सर्वर पक्ष या गैर-ब्राउज़र कार्यान्वयन के लिए नामित पाइप के बारे में कैसे?

हां यह पुरानी तकनीक है और उपयोग निर्भर करता है कि आप किस ओएस का उपयोग करते हैं, लेकिन जब तक आपके सर्वर की ओर जेएस पर्यावरण में फ़ाइलों को पढ़ने और लिखने की क्षमता होती है, यह काम कर सकती है, और यह विवरण 'उच्च स्तरीय' इंटर-प्रोसेस संचार।

+0

आह, यह ब्राउज़र आधारित है, अद्यतन के अनुसार, इसलिए मेरा जवाब लागू नहीं होता है। – joshp

1

आप डीबीस को आजमा सकते हैं, इसमें इंटरफ़ेस को परिभाषित करने, क्वेरी करने और उपयोग करने के लिए बहुत ही सरल तंत्र है, और XPCOM और वेबकिट आधारित ब्राउज़र के लिए कुछ घटक हैं (उदाहरण के लिए http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge और http://code.google.com/p/v8-dbus/)। इसके अलावा डीबीस ओपनसोर्स और क्रॉस प्लेटफार्म है।

+0

धन्यवाद। यह दिलचस्प लग रहा है, मैं इसे देख लूंगा। –

+0

मुझे नहीं लगता कि यह वह करेगा जो वह चाहता है। मुझे लगता है कि वह चाहता है कि वेब ऐप अपने सर्वर पर एप्लिकेशन से बात करे, न कि ब्राउज़र के समान स्थानीय मशीन पर एप्लिकेशन। यह केवल तभी काम करेगा यदि ब्राउज़र और सी ++ ऐप एक ही मशीन पर हैं। (डीबीस एक स्थानीय संचार योजना है।) –

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

  • कोई संबंधित समस्या नहीं^_^