2011-02-09 9 views
9

के साथ आईफोन उद्देश्य-सी सॉकेट संचार मैं कुछ प्रकार के बड़े पैमाने पर मल्टीप्लेयर बोर्ड-गेम विकसित कर रहा हूं। मेरा समाधान सर्वर पर node.js socket.io है। मुझे कुछ प्रकार के उद्देश्य-सी सॉकेट को कार्यान्वित करने के लिए समाधान की आवश्यकता है जो स्ट्रिंग के रूप में जेसन ऑब्जेक्ट्स भेजने और प्राप्त करने के लिए socket.io के साथ संवाद करेगा। मैं websocket के साथ वेबकिट का उपयोग नहीं करेंगे। क्या कोई संभावना है? सर्वर गेम की स्थिति रखेगा, आईफोन क्लाइंट सर्वर पर कार्रवाई भेजेंगे और सर्वर पर बदलाव प्राप्त करेंगे।सॉकेट.आईओ

+0

यह प्रश्न ऑफ-विषय है; [केवल पुस्तकालयों या अन्य ऑफ़-साइट संसाधनों की सिफारिशों के लिए पूछे जाने वाले प्रश्न स्टैक ओवरफ़्लो के लिए ऑफ-विषय हैं] (// meta.stackoverflow.com/q/251134/2747593)। ओपी, अगर आपको अभी भी यह समस्या है, तो कृपया कोड लिखना शुरू करें, और जब आपके पास अधिक विशिष्ट समस्या हो तो वापस आएं। हमें यह सुनिश्चित करना सुनिश्चित करें कि आपने क्या किया है [http://whathaveyoutried.com) और एक [न्यूनतम, पूर्ण, सत्यापन योग्य उदाहरण] (// stackoverflow.com/help/mcve) शामिल करें। –

उत्तर

3

चेक इस बाहर: https://github.com/fpotter/socketio-cocoa

+0

यह लाइब्रेरी अब और बनाए रखा प्रतीत नहीं होता है, गिट प्रोजेक्ट भी क्लोन नहीं करता है - ठीक से –

5

या एक नजर है cocoaasyncsocket पर:

CocoaAsyncSocket TCP और UDP का समर्थन करता है। AsyncSocket क्लास टीसीपी, के लिए है और AsyncUdpSocket क्लास यूडीपी के लिए है। प्रत्येक वर्ग नीचे वर्णित है।

AsyncSocket एक टीसीपी/आईपी सॉकेट नेटवर्किंग लाइब्रेरी है जो CFSocket और CFStream को लपेटती है। यह एसिंक्रोनस ऑपरेशन प्रदान करता है, और एक मूल कोको वर्ग प्रतिनिधि समर्थन के साथ पूरा करता है। यहाँ मुख्य सुविधाएँ हैं:

  • कतारबद्ध गैर अवरुद्ध रीड और राईट, वैकल्पिक समय समाप्ति के साथ। आप बताएं कि क्या पढ़ना है या लिखना है, और यह होने पर यह आपको कॉल करेगा।

  • स्वचालित सॉकेट स्वीकृति। यदि आप इसे कनेक्शन स्वीकार करने के लिए कहते हैं, तो यह आपको प्रत्येक कनेक्शन के लिए स्वयं के नए उदाहरणों के साथ बुलाएगा। आप, निश्चित रूप से, उन्हें तुरंत डिस्कनेक्ट कर सकते हैं।

  • प्रतिनिधि समर्थन। त्रुटि, कनेक्शन, स्वीकार करता है, पूर्णता पढ़ता है, पूर्णता लिखें, प्रगति, और डिस्कनेक्शन सभी परिणाम आपके प्रतिनिधि विधि को कॉल करते हैं।

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

  • एक कक्षा में स्वयं निहित। आपको धाराओं या सॉकेट के साथ घूमने की जरूरत नहीं है। कक्षा उन सभी को संभालती है।

  • आईपीवी 4 और आईपीवी 6 पर टीसीपी धाराओं के लिए समर्थन।

पुस्तकालय सार्वजनिक क्षेत्र, मूल रूप डस्टिन वॉस द्वारा लिखित है। को अनुमति देने के लिए सार्वजनिक सेटिंग में उपलब्ध है और इसके निरंतर समर्थन को प्रोत्साहित करता है।

AsyncUdpSocket एक यूडीपी/आईपी सॉकेट नेटवर्किंग पुस्तकालय कि CFSocket लपेटता है। यह लगभग टीसीपी संस्करण की तरह लगभग काम करता है, लेकिन विशेष रूप से यूडीपी के लिए डिज़ाइन किया गया है।इसमें कतारबद्ध गैर-अवरुद्ध भेजने/प्राप्त करने के लिए संचालन, पूर्ण प्रतिनिधि समर्थन, रन-लूप आधारित, स्वयं निहित वर्ग, और आईपीवी 4 और आईपीवी 6 के लिए समर्थन शामिल है।

+0

क्या यह लाइब्रेरी बॉक्स के बाहर सॉकेट.आईओ के साथ काम करेगी? – greenimpala

11

संपादित 2015/03/19: Socket.IO लोग अपने स्वयं के आईओएस पुस्तकालय का समर्थन करता है कि Socket.IO v1.0 + बनाया। यहां प्राप्त करें: https://github.com/socketio/socket.io-client-swift


वर्ष जवाब

मैं संस्करण 0.7.2 के साथ काम करने के लिए अद्यतन fpotter के socket.io पुस्तकालय - 0.9.x
यह सॉकेट और एक्सएचआरपोलिंग का समर्थन करता है।

https://github.com/pkyeck/socket.IO-objc

हो सकता है कि आप इसे बाहर की जाँच करना चाहते हैं।

+0

हाय pkyech। मैं आपकी लाइब्रेरी का उपयोग कर रहा हूं और यह मेरे आईओएस 7 ऐप के साथ सही काम करता है। अब मैं कई कनेक्ट/डिस्कनेक्ट से बचने के लिए NSObject द्वारा प्रत्येक दृश्य नियंत्रकों द्वारा ईवेंट को एक बार कनेक्ट करना और प्रबंधित करना चाहता हूं। क्या आपके पास कोई ट्यूटोरियल है? – Maziyar

+0

क्षमा करें, लेकिन इसके लिए कोई ट्यूटोरियल नहीं है। – pkyeck

+0

मैं एक्सकोड 7 और आईओएस 9 में [लिंक] (https://github.com/pkyeck/socket.IO-objc) लाइब्रेरी जोड़ रहा हूं। लेकिन कनेक्शन के बाद यह मुझे 'त्रुटि कोड 400'' की प्रतिक्रिया दे रहा है। हालांकि अगर मैं इसे तेजी से कर रहा हूं तो यह सही ढंग से कनेक्ट हो रहा है। क्या उद्देश्य सी की पुस्तकालय अप्रचलित है? @pkyeck –

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