2012-07-18 9 views
8

विचार/संदर्भ:पुश Socket.IO और PHP का उपयोग सूचनाएं

मैं अपने उपयोगकर्ताओं के लिए एक अच्छा थोड़ा अतिरिक्त सुविधा देने के बारे में सोच रहा हूँ: मैं पुश नोटिफिकेशन जोड़ना चाहते हैं। यह उपयोग का मामला है:

लोगों के पास उनके प्रोफाइल पेज पर अतिथि पुस्तिका है। जब कोई उपयोगकर्ता की गेस्टबुक में कोई संदेश पोस्ट करता है, तो उस उपयोगकर्ता को पुश अधिसूचना प्राप्त होगी (यदि वह ऑनलाइन है)। यदि वह ऑनलाइन नहीं है, अगली बार जब वह ऑनलाइन आता है, तो हम सिर्फ डीबी से नोटिफिकेशन खींचेंगे।

मैं सॉकेट.आईओ के साथ ऐसा करने के बारे में सोच रहा था जो नोड.जेएस सर्वर पर चल रहा है। मेरा वर्तमान एप्लिकेशन PHP के साथ बनाया गया है (इसलिए पोस्टिंग इत्यादि PHP द्वारा संभाला जाता है)।

सभी ऑनलाइन उपयोगकर्ता अपनी सूचनाओं को सुनने के लिए सॉकेट.आईओ का उपयोग कर कनेक्ट करेंगे। उनकी सॉकेट सर्वर पर सरणी या हैश में सहेजी जाएगी।

इस प्रवाह को ध्यान में मेरे पास है:

  1. UserA UserB की गेस्टबुक में संदेश पोस्ट
  2. Socket.IO UserB के लिए सूचना का उत्सर्जन (यदि ऑनलाइन है, तो Socket.IO से जाना जाता है) बनाओ
  3. डीबी

में संदेश सहेजें यहां मुद्दा यह है भाग 'Socket.IO एक अधिसूचना फेंकना बनाने'। मुझे PHP से ऐसा करने का एक तरीका चाहिए, क्योंकि मुझे सर्वर इस अधिसूचना को उत्सर्जित करने और उपयोगकर्ता संदेश पोस्ट करने वाला नहीं है। तुम क्यों पूछते हो? मैं दुर्भावनापूर्ण उपयोगकर्ताओं को नकली नोटिफिकेशन बनाने से रोकना चाहता हूं। तो स्यूडोकोड में पीएचपी आवेदन इस प्रकार दिखाई देगा:

// do some validations here ... 

// This is the message that was posted 
$message = array(
    'from' => 'UserA', 
    'to' => 'UserB', 
    'msg' => 'Hello you' 
); 

// Send a notification to the user by emitting an event 
socketio_emit('notification', json_encode($message)); 

save_in_db($message); 

प्रश्न (ओं):

इस बारे में आपके क्या विचार हैं? क्या यह प्रतीत होता है कि यह छोटी सी सुविधा को लागू करने के बेहतर तरीके हैं? और, मैं PHP में socketio_emit() कैसे करूं, दूसरे शब्दों में: मैं PHP का उपयोग कर सॉकेट.आईओ सर्वर के साथ कैसे संवाद करूं?

बहुत बहुत धन्यवाद!

+0

सर्वर पर निरंतर खुला कनेक्शन रखकर पुश नोटिफिकेशन बनाए रखा जाता है। –

+0

http://stackoverflow.com/q/6933497/11963 – hangy

+0

@ कोलेजोहनसन मुझे लगता है कि आप लंबे मतदान का जिक्र कर रहे हैं। सवाल वास्तव में है: मैं PHP का उपयोग कर सॉकेट.आईओ सर्वर के साथ कैसे संवाद कर सकता हूं। – EsTeGe

उत्तर

9

मैंने नई सूचनाओं को पोस्ट करने के लिए Express.js और CURL का उपयोग करके इसे हल किया। Node.js सर्वर एक विशिष्ट यूआरएल को सुनता है, उदा।/New_notification। उस URL पर कर्ल के साथ मेरे वेबसर्वर से एक POST अनुरोध करना, मैं नई अधिसूचनाएं जोड़ सकता हूं और उन्हें सॉकेट.आईओ (सभी को उसी नोड.जेएस एप्लिकेशन में) से संभाल सकता हूं।

+0

पर PHP के साथ एक अनुरोध भेज सकते हैं ... इस समाधान में एक्सप्रेस पर निर्भर विशेष रूप से आपके लिए क्या प्रदान करता है? हो सकता है कि मुझे कुछ याद आ रहा है लेकिन क्या मैं एक्सप्रेस का उपयोग किये बिना किसी विशेष आने वाले अनुरोध के लिए खाता नहीं ले सकता? –

+1

आप इस समाधान को करने के लिए ExpressJS पर भरोसा नहीं करते हैं। आप इसका उपयोग किए बिना एक ही परिणाम प्राप्त कर सकते हैं –

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