Trang chủ » Mã hóa » Cách hiển thị / cập nhật Danh sách lượt thích trên Facebook Sử dụng Node.js

    Cách hiển thị / cập nhật Danh sách lượt thích trên Facebook Sử dụng Node.js

    Bằng cách tìm ra các mã mẫu từ bài đăng trước, bạn có thể cảm nhận được lợi ích thực sự của việc sử dụng Node.js. Trong bài viết hôm nay, chúng tôi đưa ra một kịch bản thực tế thể hiện rõ việc sử dụng Node.js trong lập trình dựa trên sự kiện.

    Chúng tôi sẽ tạo một tập lệnh đơn giản tạo ra số lượng "lượt thích trên Facebook" của một trang Facebook cụ thể. Và trên hết, chúng tôi sẽ giới thiệu một tính năng bổ sung sẽ cập nhật số lượng "lượt thích trên Facebook" cứ sau 2 giây.

    Đầu ra sẽ đơn giản và đơn giản, có thể trông giống như thế này: "Số lượt thích: 2630405" và tùy thuộc vào bạn để tạo kiểu cho nó bằng CSS, hãy bắt đầu sau đó!

    Để cho bạn một ý tưởng

    Trước khi chúng ta đi sâu vào sử dụng Node.js, hãy dành một chút thời gian để suy nghĩ những gì chúng ta thường làm với các ngôn ngữ lập trình phía máy chủ phổ biến (như PHP). Nếu bạn đang suy nghĩ thực hiện cuộc gọi AJAX để tìm số thích trong mỗi 2 giây - bạn đúng - nhưng điều này có thể có khả năng tăng chi phí máy chủ.

    Chúng ta có thể xem xét truy cập graph.facebook.com đó sẽ là một hoạt động I / O tốn thời gian. Xem xét 5 người dùng truy cập vào cùng một trang (đưa ra số lượng thích). Số lượng truy cập vào graph.facebook.com trong 2 giây sẽ trở thành 10, vì mọi người sẽ cập nhật số thích một lần trong 2 giây và nó sẽ được thực hiện như một luồng riêng biệt.

    Điều đó không cần thiết với việc triển khai máy chủ Node.js. Chỉ có cần có một quyền truy cập vào máy chủ Facebookthời gian để nhận và xuất kết quả (số lượng thích) có thể được giảm đáng kể.

    Tuy nhiên, làm thế nào chúng ta sẽ thực hiện điều này? Đó là những gì chúng ta sẽ tìm hiểu trong các phần dưới đây.

    Bắt đầu

    Trước khi chúng tôi bắt đầu, bạn nên Node.js đã được cài đặt và chạy trên tài khoản lưu trữ web hỗ trợ môi trường v8. Kiểm tra các chủ đề, "Bắt đầu với Node.js" và "Cài đặt Node.js" trong bài viết trước của chúng tôi, Hướng dẫn cho người mới bắt đầu về Node.js nếu bạn chưa.

    Trong máy chủ, chúng tôi truy cập graph.facebook.com trong khoảng thời gian 2 giâycập nhật số lượng thích. Hãy gọi nó là "HÀNH ĐỘNG1". Chúng tôi sẽ chuẩn bị một trang để nó sẽ tự cập nhật thông qua AJAX cứ sau 2 giây.

    Xem xét nhiều người dùng truy cập vào cùng một trang. Đối với mỗi yêu cầu AJAX của người dùng, một trình lắng nghe sự kiện được đính kèm trong máy chủ để hoàn thành "ACTION1". Vì vậy, bất cứ khi nào "ACTION1" hoàn thành, người nghe sự kiện sẽ được kích hoạt.

    Chúng ta hãy xem mã máy chủ-mã.

    Các mã:

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = sự kiện mới.EventEuctor (); hàm get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("hồi đáp", chức năng (phản hồi) var body = ""; answer.addListener ("data", function (data) body + = data;); respons.addListener ("end", function ( ) var data = JSON.parse (body); facebook_emitter.emit ("data", String (data.like)););); request.end (); ) (data) answer.writeHeader (200, "Kiểu nội dung": "text / plain"); answer.write (data); respons.end ();); other load_file (my_path, hồi đáp) ;). lắng nghe (8080); setInterval (get_data, 1000); sys.puts ("Máy chủ chạy trên 8080"); 

    Giải thích mã:

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = sự kiện mới.EventEuctor (); 

    Chúng tôi tạo ra một Máy khách HTTP để truy cập API đồ thị của Facebook facebook_client. Chúng tôi cũng cần Sự kiện () chức năng sẽ kích hoạt khi "ACTION1" hoàn thành.

    Điều này sẽ rõ ràng trong mã được mô tả dưới đây.

     hàm get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("hồi đáp", chức năng (phản hồi) var body = ""; ) var data = JSON.parse (body); facebook_emitter.emit ("data", String (data.like)););); request.end ();  

    Chức năng lấy dữ liệu tìm nạp dữ liệu từ Cuộc gọi API của Facebook. Chúng tôi trước tạo một yêu cầu NHẬN sử dụng yêu cầu phương pháp của cú pháp sau:

     Client.request ('GET', 'get_url', "host": "host_url"); 

    Con số “19292868552” là ID Facebook của trang mà chúng ta cần truy cập chi tiết. Vì vậy, trang cuối cùng mà chúng tôi đang cố gắng truy cập trở thành: http://graph.facebook.com/19292868552. Sau khi thực hiện yêu cầu, chúng tôi cần phải thêm ba người nghe nó, tương ứng như sau:

    1. Phản ứng - Trình nghe này được kích hoạt khi yêu cầu bắt đầu nhận dữ liệu. Ở đây chúng ta đặt phần thân của phản hồi cho một chuỗi rỗng.
    2. Dữ liệu - Vì Node.js không đồng bộ, dữ liệu được nhận dưới dạng khối. Dữ liệu này được thêm vào biến cơ thể để xây dựng cơ thể.
    3. Kết thúc - Trình nghe này được kích hoạt khi "ACTION1" được chỉ định ở trên đã hoàn thành. Dữ liệu được trả về bởi lệnh gọi API đồ thị của Facebook trả về dữ liệu ở định dạng JSON. Vì vậy, chúng tôi chuyển đổi chuỗi thành mảng JSON bằng hàm JavaScript JSON.parse.

    Bạn có thể thấy rằng một người nghe được đính kèm cho event_emitter vật. Chúng tôi cần kích hoạt nó ở cuối "ACTION1". Chúng tôi kích hoạt người nghe một cách rõ ràng với phương thức facebook_emitter.emit.

     "id": "19292868552" " "https://www.facebook.com/pl platform", "thích": 2738595, "danh mục": "Sản phẩm / dịch vụ", "trang web": "http://developers.facebook.com", "tên người dùng": "Nền tảng", "thành lập": "Tháng 5 năm 2007", "company_overview": "Nền tảng Facebook cho phép mọi người xây dựng các ứng dụng xã hội trên Facebook và web.", "sứ mệnh": "Để web trở nên cởi mở và xã hội hơn.", "đậu xe": "đường phố": 0, "lô": 0, "người phục vụ": 0,

    Phần trên thể hiện phản hồi của lệnh gọi API đồ thị của Facebook. Để có được số lượng thích: lấy đối tượng thích của đối tượng dữ liệu, chuyển đổi nó thành chuỗichuyển nó đến phát ra chức năng.

    Sau hành động này, chúng tôi kết thúc yêu cầu.

     i data) answer.writeHeader (200, "Kiểu nội dung": "text / plain"); respons.write (data); respons.end ();); other load_file (my_path, hồi đáp); ). lắng nghe (8080); setInterval (get_data, 1000); 

    Tạo máy chủ tương tự như hướng dẫn trước - với một thay đổi nhỏ. Đối với mọi URL (ngoại trừ /lấy dữ liệu) chúng tôi tải tập tin tĩnh tương ứng bằng cách sử dụng tải tập tin chức năng chúng tôi đã xác định trước đó.

    Các http: // localhost: 8080 / getdata là URL cho yêu cầu AJAX. Trong mỗi yêu cầu AJAX, chúng tôi đính kèm một người nghe sự kiện để facebook_emitter. Nó tương tự như addListener nhưng người nghe bị giết sau khi người nghe được phát ra để tránh rò rỉ bộ nhớ. Nếu bạn cần kiểm tra nó thay thế cái Một lần với addListener. Chúng tôi cũng gọi lấy dữ liệu chức năng một lần trong 1 giây bởi chức năng xác định.

    Tiếp theo, chúng tôi tạo trang HTML nơi đầu ra hiển thị.

    Các mã:

        Facebook thích     

    Số lượt thích: Tải…

    Giải thích mã:

    Phần AJAX của jQuery khá tự giải thích. Hãy kiểm tra cuộc gọi của load_content chức năng. Có vẻ như vậy đang chạy một vòng lặp vô hạn, và đúng vậy Đó là số lượng thích được cập nhật chính nó.

    Mỗi cuộc gọi AJAX sẽ bị trì hoãn bởi thời gian trung bình là 1 giây vì độ trễ kích hoạt của mỗi cuộc gọi như vậy sẽ là 1 giây từ máy chủ. Yêu cầu AJAX sẽ ở dạng không đầy đủ trong 1 giây đó.

    Vì vậy, bạn đi - một phương pháp trì hoãn phản hồi AJAX từ máy chủ để có được số lượng Facebook thích. Đặt câu hỏi trong phần bình luận của chúng tôi nếu bạn có bất kỳ nghi ngờ hoặc suy nghĩ, cảm ơn!

    Ghi chú của biên tập viên: Bài này được viết bởi Địa lý Paul cho Hongkiat.com. Geo là một nhà phát triển Web / iPhone độc ​​lập, thích làm việc với PHP, Codeigniter, WordPress, jQuery và Ajax. Ông có 4 năm kinh nghiệm về PHP và 2 năm kinh nghiệm Phát triển ứng dụng iniPhone.