Πώς να εμφανίσετε / ενημερώσετε Το Facebook αρέσει Χρησιμοποιώντας το Node.js
Με την επεξεργασία των δειγμάτων κωδικών από την προηγούμενη θέση, μπορεί να έχετε την αίσθηση του τι είναι το πραγματικό όφελος από τη χρήση του Node.js. Στη σημερινή δημοσίευση, τοποθετούμε ένα πρακτικό σενάριο που καταδεικνύει σαφώς τη χρήση του Node.js σε προγραμματισμό βάσει συμβάντων.
Δημιουργούμε ένα απλό σενάριο που εξάγει τον αριθμό των "θέσεων Facebook" μιας συγκεκριμένης σελίδας στο Facebook. Και πάνω από αυτό, θα ρίξουμε μια πρόσθετη δυνατότητα που θα ενημερώνει τον αριθμό των "Facebook likes" κάθε 2 δευτερόλεπτα.
Η έξοδος θα είναι απλή και απλή, πιθανόν να μοιάζει με κάτι τέτοιο: "Αριθμός Αληθειών: 2630405" και εξαρτάται από εσάς να το χρησιμοποιήσετε με το CSS, ας ξεκινήσουμε!
Να σας δώσω μια ιδέα
Πριν αρχίσουμε να χρησιμοποιούμε το Node.js, ας πάρουμε λίγο χρόνο για να σκεφτούμε τι θα κάνουμε κανονικά με κοινές γλώσσες προγραμματισμού (όπως PHP). Εάν σκέφτεστε να κάνετε μια κλήση AJAX για να βρείτε τον αριθμό των αρέσει σε κάθε 2 δευτερόλεπτα - είστε σωστοί - αλλά αυτό μπορεί ενδεχομένως να αυξηθεί το γενικό κόστος του διακομιστή.
Μπορούμε να το εξετάσουμε πρόσβαση graph.facebook.com που θα ήταν α χρονοβόρα λειτουργία I / O. Σκεφτείτε 5 χρήστες που έχουν πρόσβαση στην ίδια σελίδα (η οποία εξάγει τον αριθμό των αρέσει). Ο αριθμός πρόσβασης στο graph.facebook.com σε 2 δευτερόλεπτα θα γίνει 10, επειδή ο καθένας θα ενημερώσει τον αριθμό του / της αρέσει μία φορά σε 2 δευτερόλεπτα και αυτό θα εκτελείται ως ξεχωριστό νήμα.
Αυτό δεν είναι απαραίτητο με την εφαρμογή διακομιστή Node.js. Μόνο απαιτείται μία πρόσβαση στο διακομιστή Facebook και το χρόνος για να πάρει και να εξάγει το αποτέλεσμα (αριθμός αρέσει) μπορεί να μειωθεί σημαντικά.
Ωστόσο, πώς θα το εφαρμόσουμε; Αυτό θα δούμε στις παρακάτω ενότητες.
Ξεκινώντας
Πριν ξεκινήσουμε, θα πρέπει έχουν Node.js εγκατασταθεί και εκτελείται σε ένα περιβάλλον φιλοξενίας που υποστηρίζεται από το περιβάλλον v8. Ανατρέξτε στα θέματα "Ξεκινώντας με το Node.js" και "Εγκαθιστώντας το Node.js" στο προηγούμενο άρθρο μας, Οδηγός για αρχάριους του Node.js εάν δεν έχετε.
Στο διακομιστή εμείς πρόσβαση graph.facebook.com
σε διάστημα 2 δευτερολέπτων και ενημερώστε τον αριθμό των αρέσει. Ας το ονομάσουμε "ΔΡΑΣΗ1"Θα προετοιμάσουμε μια σελίδα ώστε να ενημερωθεί μέσω AJAX κάθε 2 δευτερόλεπτα.
Σκεφτείτε πολλούς χρήστες που έχουν πρόσβαση στην ίδια σελίδα. Για το αίτημα κάθε χρήστη του AJAX, ένας ακροατής συμβάντος επισυνάπτεται στο διακομιστή για την ολοκλήρωση του "ACTION1". Επομένως, όποτε ολοκληρωθεί η ενέργεια "ACTION1" θα ενεργοποιηθούν οι ακροατές του συμβάντος.
Ας ρίξουμε μια ματιά στον κώδικα της πλευράς του διακομιστή.
Οι κωδικοί:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = new events.EventEmitter (); συνάρτηση get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("απάντηση", συνάρτηση (απάντηση) var body = ""; response.addListener ("δεδομένα", συνάρτηση (δεδομένα) body + = data;); ) var δεδομένα = JSON.parse (σώμα), facebook_emitter.emit ("δεδομένα", String (data.likes))?))?))? request.end (); my_http.createServer (λειτουργία (αίτημα, απάντηση) var my_path = url.parse (request.url) .name_name; if (my_path === "/ getdata") var listener = facebook_emitter.once (δεδομένα) response.writeHeader (200, "Τύπος περιεχομένου": "κείμενο / απλό"); response.write (δεδομένα); response.end ();) else load_file · ακούω (8080); setInterval (get_data, 1000); sys.puts ("Διακομιστής που εκτελείται σε 8080")?
Κωδικοί Επεξήγηση:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = new events.EventEmitter ();
Δημιουργούμε ένα Πελάτη HTTP για πρόσβαση στο API του Facebook Graph facebook_client
. Χρειαζόμαστε επίσης το EventEmitter ()
που θα ενεργοποιηθεί όταν ολοκληρωθεί η ενέργεια "ACTION1".
Αυτό θα είναι σαφές στον κώδικα που περιγράφεται παρακάτω.
συνάρτηση get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("απάντηση", συνάρτηση (απάντηση) var body = ""; response.addListener ("δεδομένα", συνάρτηση (δεδομένα) body + = data;); ) var δεδομένα = JSON.parse (σώμα), facebook_emitter.emit ("δεδομένα", String (data.likes))?))?))? request.end ();
Λειτουργία get_data
συλλέγει δεδομένα από την πρόσκληση API του Facebook. Πρώτα δημιουργήστε ένα αίτημα GET χρησιμοποιώντας το αίτηση
μέθοδος της ακόλουθης σύνταξης:
Client.request ('GET', 'get_url', "host": "host_url");
Ο αριθμός “19292868552” είναι το αναγνωριστικό Facebook της σελίδας που πρέπει να έχουμε πρόσβαση στα στοιχεία της. Έτσι, η τελευταία σελίδα που προσπαθούμε να αποκτήσουμε γίνεται: http://graph.facebook.com/19292868552. Μετά την υποβολή της αίτησης πρέπει να το κάνουμε προσθέστε τρεις ακροατές σε αυτό, αντίστοιχα τα εξής:
- Απάντηση - Αυτός ο ακροατής ενεργοποιείται όταν το αίτημα αρχίζει να λαμβάνει δεδομένα. Εδώ ορίσαμε το σώμα της απάντησης σε μια κενή συμβολοσειρά.
- Δεδομένα - Δεδομένου ότι το Node.js είναι ασύγχρονο, τα δεδομένα λαμβάνονται ως κομμάτια. Αυτά τα δεδομένα προστίθενται στη μεταβλητή σώματος για τη δημιουργία του σώματος.
- Τέλος - Αυτός ο ακροατής ενεργοποιείται όταν έχει ολοκληρωθεί η ενέργεια "ACTION1" που ορίζεται παραπάνω. Τα δεδομένα που επιστρέφονται με την κλήση API του γραφήματος Facebook επιστρέφουν δεδομένα σε μορφή JSON. Έτσι, μετατρέπουμε τη συμβολοσειρά σε πίνακα JSON χρησιμοποιώντας τη λειτουργία JavaScript
JSON.parse
.
Μπορείτε να δείτε ότι ένας ακροατής είναι συνδεδεμένος για το event_emitter
αντικείμενο. Εμείς πρέπει να το ενεργοποιήσετε στο τέλος της "ΔΡΑΣΗΣ1". Ενεργοποιούμε τον ακροατή με τη μέθοδο facebook_emitter.emit
.
"id": "19292868552", "όνομα": "Πλατφόρμα Facebook", "εικόνα": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "σύνδεσμος": "https://www.facebook.com/platform", "likes": 2738595, "κατηγορία": "Προϊόν / υπηρεσία", "ιστοσελίδα": "http://developers.facebook.com", "username": "πλατφόρμα", "ιδρύθηκε": "Μάιος 2007", "company_overview": "Η πλατφόρμα Facebook επιτρέπει σε οποιονδήποτε να δημιουργήσει κοινωνικές εφαρμογές στο Facebook και στον ιστό.", "αποστολή": " "πάρκινγκ": "street": 0, "lot": 0, "valet": 0,
Τα παραπάνω αντιπροσωπεύουν την απάντηση της κλήσης API του Facebook Graph. Για να πάρετε τον αριθμό των αρέσει: πάρτε το αντικείμενο likes του αντικειμένου δεδομένων, μετατρέψτε το σε συμβολοσειρά και περάστε το εκπέμπουν
λειτουργία.
Μετά από αυτή τη δράση εμείς τέλος
το αίτημα.
my_http.createServer (λειτουργία (αίτημα, απάντηση) var my_path = url.parse (request.url) .name_name; if (my_path === "/ getdata") var listener = facebook_emitter.once δεδομένα) response.writeHeader (200, "Τύπος περιεχομένου": "κείμενο / απλό"), response.write (δεδομένα), response.end ();) else load_file (my_path, response); ) ακούστε (8080); setInterval (get_data, 1000);
Η δημιουργία του διακομιστή είναι παρόμοια με την προηγούμενη εκμάθηση - με μια μικρή αλλαγή. Για κάθε διεύθυνση URL (εκτός από / getdata
) εμείς φορτώστε το αντίστοιχο στατικό αρχείο χρησιμοποιώντας το load_file
λειτουργία ορίσαμε νωρίτερα.
ο http: // localhost: 8080 / getdata
είναι η διεύθυνση URL για το αίτημα AJAX. Σε κάθε αίτηση AJAX εμείς επισυνάψτε έναν ακροατή για εκδηλώσεις facebook_emitter
. Είναι παρόμοιο με το addListener
αλλά ο ακροατής θα σκοτωθεί μετά την εκπομπή του ακροατή για να αποφευχθεί διαρροή μνήμης. Αν πρέπει να το ελέγξετε ακριβώς αντικαταστήστε το μια φορά
με addListener
. Καλούμε επίσης το get_data
λειτουργία μία φορά σε 1 δευτερόλεπτο από τη λειτουργία setInterval
.
Στη συνέχεια, δημιουργούμε τη σελίδα HTML, στην οποία εμφανίζεται η έξοδος.
Οι κωδικοί:
Το Facebook αρέσει Αριθμός αρετών: Φόρτωση…
Κωδικοί Επεξήγηση:
Το τμήμα jQuery AJAX είναι αρκετά αυτονόητο. Ελέγξτε την κλήση του load_content
λειτουργία. Μοιάζει με αυτό τρέχει ένας άπειρος βρόχος, και ναι. Αυτός είναι ο αριθμός των αρέσει ενημερώνεται.
Κάθε κλήση AJAX θα καθυστερήσει κατά μέσο όρο 1 δευτερόλεπτο καθώς η καθυστέρηση στην ενεργοποίηση κάθε τέτοιας κλήσης θα είναι 1 δευτερόλεπτο από το διακομιστή. Το αίτημα AJAX θα είναι σε ελλιπή μορφή για αυτό το 1 δευτερόλεπτο.
Έτσι, πηγαίνετε - μια μέθοδος καθυστέρησης μιας απάντησης AJAX από το διακομιστή για να πάρετε τον αριθμό του Facebook αρέσει. Αφήστε την ερώτησή σας στην ενότητα σχολίων αν έχετε οποιαδήποτε αμφιβολία ή σκέψη, ευχαριστίες!
Σημείωση του συντάκτη: Αυτή η ανάρτηση είναι γραμμένη από Geo Paul για το Hongkiat.com. Ο Geo είναι ανεξάρτητος προγραμματιστής Ιστού / iPhone που απολαμβάνει να εργάζεται με PHP, Codeigniter, WordPress, jQuery και Ajax. Έχει 4 χρόνια εμπειρίας στην PHP και 2 χρόνια εμπειρίας στην ανάπτυξη εφαρμογών iniPhone.