2012-08-31 16 views
15

पर वेबस्केट आधारित अधिसूचनाएं मेरे पास लार्वेल का उपयोग करके PHP में लिखा गया एक वेब एप्लिकेशन है।PHP अनुप्रयोग + सॉकेट.आईओ

अब, मुझे रीयलटाइम अधिसूचना प्रणाली जोड़नी है जो सर्वर -> क्लाइंट से संदेशों को धक्का देती है, और क्लाइंट -> सर्वर से धक्का संदेश पुनर्प्राप्त कर सकती है।

चूंकि सॉकेट.आईओ पीछे की तरफ संगत है और गहराई से घटता है, मैं इसे वेबसॉकेट/AJAX मतदान भाग के लिए उपयोग करना चाहता हूं।

समस्या यह है कि सॉकेट.आईओ डिफ़ॉल्ट रूप से नोड.जेएस बैकएंड के साथ काम करता है।

मेरे पास सर्वर तक रूट पहुंच है, समानांतर में या अपाचे में दोनों (अपाचे और नोड) चलाने में कोई समस्या नहीं है।

समस्या है, मैं PHP से नोड + सॉकेट्स.आईओ से एक संदेश कैसे भेजूं?

और फिर, मैं सॉकेट्स.आईओ + नोड से PHP में एक संदेश कैसे स्थानांतरित करूं?

मैंने नोड + सॉकेट को ब्राउज़र भाग में छोड़ दिया है, क्योंकि यह काफी सीधे आगे है।

मैंने Express.js + CURL and/or POST requests का उपयोग करने वाले उदाहरण देखे हैं, लेकिन क्या ऐसा करने का निम्न स्तर नहीं है?

मुझे DNode + PHP के बारे में पता है, लेकिन मैं कल्पना नहीं कर सकता कि सबकुछ कैसे इकट्ठा करना है - अपाचे, पीएचपी, नोड, सॉकेट.आईओ, डीएनओडी, इसलिए यह एक साथ काम करेगा।

इसके अलावा, मैं इस PHP WebSockets server कार्यान्वयन के लिए एक लार्वेल लाइब्रेरी में बदल गया हूं। हालांकि, इस पुस्तकालय के साथ समस्या यह है कि यह इसके क्लाइंट साइड के लिए स्वच्छ वेबसाकेट का उपयोग करती है। और, मुझे इसे Socket.IO client के साथ एक साथ हैक करने का कोई तरीका नहीं मिला।

उत्तर

8

using PHP and Socket.IO पर यह ट्यूटोरियल आपके प्रश्न के मुख्य भाग का उत्तर देता है।

socket.io आपके एकमात्र विकल्प नहीं है। realtime web tech guide पर एक नज़र डालें। इसे देखकर अब सबसे अच्छा PHP- आधारित समाधान Ratchet है। इसे एक अलग प्रक्रिया के रूप में चलाने की जरूरत है ताकि आप अभी भी क्रॉस-प्रोसेस संचार समस्या प्राप्त कर सकें।

सामान्य क्रॉस प्रक्रिया संचार समस्या संदेश कतारों का उपयोग करना है। तब समस्या तब आती है जब आप अपने PHP एप को अपाचे पर चलाना चाहते हैं ताकि रीयलटाइम वेब तकनीक से ईवेंट की जानकारी दी जा सके। आपको शायद वेब कॉल के माध्यम से ऐसा करना होगा, भले ही यह रीयलटाइम वेब तकनीक प्रक्रिया से अपाचे सर्वर पर कॉल हो।

एक और विकल्प रीयलटाइम संचार को Pusher जैसे होस्टेड सेवा पर ऑफ़लोड करना है, जिसके लिए मैं काम करता हूं।

यह हाल ही में सवाल भी प्रासंगिक है और कुछ उपयोगी लिंक है: Is native PHP support for Web Sockets available?

+0

अरे, वह रत्शेट! यह मालिक है! http://socketo.me/docs/push में आपके गैर-रैचेट ऐप से कैसे धक्का देना है, इस पर चरण-दर-चरण ट्यूटोरियल है। मैंने मिनटों में कार्यक्षमता लागू की। रत्शेट के लिए +10। – jolt

+0

@leggetter वाह, पुशर मेरे यहां एक असली नो-ब्रेनर जैसा दिखता है। इसे साझा करने के लिए धन्यवाद। मुझे लगता है कि मैं इसे आज़मा दूंगा। इसके बाद यह मेरे अपने सिस्टम को लागू करने में अपना समय बर्बाद कर रहा था। –

+0

हाँ, Pusher.com जाने के लिए सैने मार्ग लगता है! –

1

नोड और अपाचे/PHP के बीच संवाद करने का कोई आसान तरीका नहीं है। इसलिए आपको नोड में फिर से अपनी सभी कार्यक्षमताओं को लिखना होगा (mysql डेटाबेस से कनेक्ट करना और ऐसे) या नोड से कॉल करने और सॉकेट तक जाने के लिए एक एपीआई बनाना होगा।

हालांकि आप सॉकेट्स.ओओ का उपयोग करने के बजाय jquery और php के साथ अपनी खुद की websockets कार्यक्षमता प्राप्त करने के लिए Jquery graceful websockets और this php class जैसे एक jQuery प्लगइन का उपयोग कर सकते हैं।

4

Elephant.IOSocket.IO साथ पीएचपी का समर्थन करता है, तो यह पर एक नज़र डालें!

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