Node.js का उपयोग करके फेसबुक लाइक कैसे प्रदर्शित / अद्यतन करें
पिछले पोस्ट से सैंपल कोडों को काम करने से, आपको यह महसूस हो सकता है कि Node.js. का उपयोग करने का वास्तविक लाभ क्या है। आज की पोस्ट में, हम एक व्यावहारिक स्क्रिप्ट में फेंकते हैं जो इवेंट-आधारित प्रोग्रामिंग में स्पष्ट रूप से Node.js के उपयोग को प्रदर्शित करता है.
हम एक साधारण स्क्रिप्ट बना रहे हैं जो किसी विशेष फेसबुक पेज के "फेसबुक लाइक" की संख्या को आउटपुट करती है। और उसके शीर्ष पर, हम एक अतिरिक्त सुविधा में फेंक देंगे जो हर 2 सेकंड में "फेसबुक लाइक" की संख्या को अपडेट करेगी.
उत्पादन सरल और सादा होगा, शायद कुछ इस तरह दिखता है: "पसंद की संख्या: 2630405" और यह सीएसएस का उपयोग करके इसे स्टाइल करना है, चलो फिर शुरू करें!
आपको एक आइडिया देने के लिए
इससे पहले कि हम Node.js का उपयोग करने में गोता लगाएँ, आइए एक पल के लिए सोचें कि हम सामान्य सर्वर-साइड प्रोग्रामिंग भाषाओं (जैसे PHP) के साथ सामान्य रूप से क्या करेंगे। यदि आप की संख्या का पता लगाने के लिए AJAX कॉल करने की सोच रहे हैं को यह पसंद है हर 2 सेकंड में - आप सही हैं - लेकिन यह हो सकता है संभावित रूप से सर्वर ओवरहेड बढ़ाएं.
हम विचार कर सकते हैं तक पहुँचने graph.facebook.com जो एक होगा समय लेने वाली I / O ऑपरेशन. एक ही पृष्ठ पर पहुंचने वाले 5 उपयोगकर्ताओं पर विचार करें (जो की संख्या को आउटपुट करता है को यह पसंद है)। की पहुँच की संख्या graph.facebook.com 2 सेकंड में 10 हो जाएंगे, क्योंकि हर कोई उसकी संख्या को अपडेट करेगा को यह पसंद है एक बार 2 सेकंड में और यह एक अलग धागे के रूप में निष्पादित किया जाएगा.
यह Node.js सर्वर कार्यान्वयन के साथ आवश्यक नहीं है। केवल फेसबुक सर्वर के लिए एक एक्सेस की आवश्यकता है और यह परिणाम प्राप्त करने और उत्पादन करने का समय (संख्या) को यह पसंद है) को बहुत कम किया जा सकता है.
हालांकि, हम इसे कैसे लागू करने जा रहे हैं? यही हम नीचे दिए गए अनुभागों में पता लगाने जा रहे हैं.
शुरू करना
हम शुरू करने से पहले, अपने चाहिए N8.js स्थापित है और v8 पर्यावरण समर्थित वेब होस्टिंग खाते पर चल रहा है. हमारे पिछले लेख में "Node.js" और "Installing Node.js" के साथ विषयों की जाँच करें, यदि आपने नहीं किया है.
सर्वर में हम पहुंच graph.facebook.com
2 सेकंड के अंतराल पर तथा की संख्या को अपडेट करें को यह पसंद है. चलो इसे "ACTION1"। हम एक पेज तैयार करेंगे ताकि यह हर 2 सेकंड में AJAX के माध्यम से खुद को अपडेट करे।".
एक ही पृष्ठ पर पहुंचने वाले कई उपयोगकर्ताओं पर विचार करें. प्रत्येक उपयोगकर्ता के AJAX अनुरोध के लिए एक घटना श्रोता सर्वर में "ACTION1" के पूरा होने के लिए संलग्न है. इसलिए जब भी "ACTION1" पूरा होगा, तो श्रोताओं को ट्रिगर किया जाएगा.
आइए सर्वर-साइड के कोड पर एक नज़र डालें.
कोड:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = नई घटनाएँ। EventEmitter (); function get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("प्रतिक्रिया", फ़ंक्शन (प्रतिक्रिया) var body = ""; response.addListener ("डेटा", फ़ंक्शन (डेटा) body + = data;); response.addListener ("अंत", function (;) ) var data = JSON.parse (बॉडी); facebook_emitter.emit ("डेटा", स्ट्रिंग (data.likes)););); request.end (); my_http.createServer (फ़ंक्शन (अनुरोध, प्रतिक्रिया) var my_path = url.parse (request.url) .pathname; यदि (my_path === "/ getdata") var श्रोता = facebook_emitter.once ("data", फ़ंक्शन) (डेटा) response.writeHeader (200, "सामग्री-प्रकार": "पाठ / सादे"); response.write (डेटा); response.end ();); और लोड_फाइल (my_ath, प्रतिक्रिया) ;)। सुनो (8080); setInterval (get_data, 1000); sys.puts ("सर्वर 8080 पर चल रहा है");
कोड स्पष्टीकरण:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = नई घटनाएँ। EventEmitter ();
हम एक बनाते हैं HTTP क्लाइंट फेसबुक ग्राफ एपीआई का उपयोग करने के लिए facebook_client
. हमें भी चाहिए EventEmitter ()
फ़ंक्शन जो "ACTION1" पूरा होने पर ट्रिगर होगा.
यह नीचे वर्णित कोड में स्पष्ट होगा.
function get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); अनुरोध। ) var data = JSON.parse (बॉडी); facebook_emitter.emit ("डेटा", स्ट्रिंग (data.likes)););); request.end ();
समारोह डेटा प्राप्त करें
फेसबुक एपीआई कॉल से डेटा प्राप्त करता है. हम पहले GET अनुरोध बनाएं का उपयोग करते हुए निवेदन
निम्नलिखित सिंटैक्स की विधि:
Client.request ( 'प्राप्त', 'GET_URL', "मेजबान": "host_url");
जो नंबर “19292868552” पृष्ठ का फेसबुक आईडी है, जिसे हमें इसके विवरण तक पहुंचने की आवश्यकता है। इसलिए अंतिम पृष्ठ जिसे हम एक्सेस करने का प्रयास कर रहे हैं वह है: http://graph.facebook.com/19292868552। अनुरोध करने के बाद हमें आवश्यकता है इसमें तीन श्रोताओं को जोड़ें, निम्नलिखित क्रमशः:
- प्रतिक्रिया - जब अनुरोध डेटा प्राप्त करना शुरू करता है तो यह श्रोता ट्रिगर होता है। यहां हम खाली स्ट्रिंग के जवाब की बॉडी सेट करते हैं.
- डेटा - जैसा कि Node.js एसिंक्रोनस है डेटा को चंक्स के रूप में प्राप्त किया जाता है। यह डेटा बॉडी वैरिएबल में जोड़ा जाता है ताकि बॉडी बन सके.
- समाप्त - इस श्रोता को तब ट्रिगर किया जाता है जब ऊपर निर्दिष्ट "ACTION1" पूरा हो जाता है। फेसबुक ग्राफ एपीआई कॉल रिटर्न डेटा JSON प्रारूप में डेटा देता है। इसलिए हम जावास्क्रिप्ट फ़ंक्शन का उपयोग करके स्ट्रिंग को JSON सरणी में कनवर्ट करते हैं
JSON.parse
.
आप देख सकते हैं कि एक श्रोता इसके लिए संलग्न है event_emitter
वस्तु। हम "ACTION1" के अंत में इसे ट्रिगर करने की आवश्यकता है. हम श्रोता को विधि के साथ स्पष्ट रूप से ट्रिगर करते हैं facebook_emitter.emit
.
"आईडी": "19292868552", "नाम": "फेसबुक प्लेटफॉर्म", "चित्र": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292878552_7506301_s.jpg", "लिंक": "लिंक": "https://www.facebook.com/platform", "पसंद": 2738595, "श्रेणी": "उत्पाद / सेवा", "वेबसाइट": "http://developers.facebook.com", "उपयोगकर्ता नाम": "प्लेटफ़ॉर्म", "स्थापित": "मई 2007", "company_overview": "फ़ेसबुक प्लेटफ़ॉर्म किसी को भी फेसबुक और वेब पर सामाजिक ऐप बनाने में सक्षम बनाता है।", "मिशन": "वेब को अधिक खुला और सामाजिक बनाने के लिए।" "पार्किंग": "सड़क": 0, "बहुत": 0, "सेवक": 0,
उपरोक्त फेसबुक ग्राफ़ एपीआई कॉल की प्रतिक्रिया को दर्शाता है। की संख्या प्राप्त करने के लिए को यह पसंद है: डेटा ऑब्जेक्ट की पसंद वस्तु लें, इसे स्ट्रिंग में बदलें तथा इसे पास करो फेंकना
समारोह.
इस कार्रवाई के बाद हम समाप्त
अनुरोध.
my_http.createServer (फ़ंक्शन (अनुरोध, प्रतिक्रिया) var my_path = url.parse (request.url) .pathname; यदि (my_path === "/ getdata") "var श्रोता = facebook_emitter.once (" डेटा ", फ़ंक्शन"), फ़ंक्शन। डेटा) response.writeHeader (200, "सामग्री-प्रकार": "पाठ / सादा"; response.write (डेटा), response.end ();); बाकी लोड_फाइल (my_path, प्रतिक्रिया); )। सुनो (8080); setInterval (get_data, 1000);
सर्वर बनाना पिछले ट्यूटोरियल के समान है - एक छोटे से बदलाव के साथ। हर URL के लिए (सिवाय /डेटा प्राप्त करें
) हम इसी स्थिर फाइल को लोड करके प्रयोग करें फाइल लोड करो
समारोह हमने पहले परिभाषित किया था.
http: // localhost: 8080 / GetData
AJAX अनुरोध के लिए URL है। प्रत्येक AJAX में हम अनुरोध करते हैं एक ईवेंट श्रोता को संलग्न करें facebook_emitter
. यह के समान है addListener
लेकिन श्रोता स्मृति रिसाव से बचने के लिए श्रोता के उत्सर्जित होने के बाद उसे मार दिया जाता है. जरूरत है तो बस इसे चेक करने की बदलो एक बार
साथ में addListener
. हम भी बुलाते हैं डेटा प्राप्त करें
फ़ंक्शन द्वारा 1 सेकंड में एक बार कार्य करें setInterval
.
अगला, हम HTML पेज बनाते हैं जहां आउटपुट प्रदर्शित होता है.
कोड:
फेसबुक के लाईकस पसंद की संख्या: लोड हो रहा है…
कोड स्पष्टीकरण:
JQuery AJAX हिस्सा बहुत आत्म-व्याख्यात्मक है। की कॉल की जाँच करें load_content
समारोह। यह इसके तरह दीखता है एक अनंत लूप चला रहा है, और हाँ यह है। की संख्या कितनी है को यह पसंद है अपने आप अपडेट हो जाता है.
प्रत्येक AJAX कॉल 1 सेकंड के औसत समय से देरी होगी इस तरह के प्रत्येक कॉल को ट्रिगर करने में देरी के रूप में सर्वर से 1 सेकंड होगा। AJAX का अनुरोध उस 1 सेकंड के लिए अपूर्ण रूप में होगा.
तो आप वहां जाएं - फेसबुक की संख्या प्राप्त करने के लिए सर्वर से AJAX प्रतिक्रिया में देरी करने का एक तरीका को यह पसंद है. यदि आपको कोई संदेह या विचार है, तो हमारे प्रश्न अनुभाग में प्रश्न छोड़ें, धन्यवाद!
संपादक की टिप्पणी: इस पोस्ट के द्वारा लिखा गया है जियो पॉल Hongkiat.com के लिए। जियो एक स्वतंत्र वेब / आईफोन डेवलपर है, जो PHP, Codeigniter, वर्डप्रेस, jQuery और Ajax के साथ काम करने का आनंद लेता है। उनके पास PHP में 4 साल का अनुभव और 2 साल का अनुभव iniPhone एप्लीकेशन डेवलपमेंट है.