如何實現在 C++ 和 Node.js 之間傳遞 JSON 資料?


C++ 是一種功能強大、高效能的語言,廣泛用於系統級程式設計和應用程式。同時,Node.js 是一種開源的跨平臺 JavaScript 執行時環境,通常用於 Web 應用程式。

通過了解 C++ 和 Node.js 之間傳遞 JSON 資料的各種方法,開發人員可以選擇最適合其特定需求的方法。

在本教程中,我們將探討在 C++ 應用程式和 Node.js 伺服器之間傳遞 JSON 資料的各種方法。

三種常見方法:使用 RESTful API、使用訊息佇列和使用 WebSocket

使用者可以按照以下步驟在 C++ 和 Node.js 之間傳遞 JSON 資料。

使用 RESTful API

使用 RESTful API 涉及使用者在 Node.js 中建立一個 RESTful Web 服務,該服務公開一組供 C++ 互動的端點。然後,C++ 應用程式可以向這些端點發出 HTTP 請求以檢索或更新 JSON 資料。

這種方法簡單易於實現,但效率可能低於其他選項。

步驟 1 - 首先,使用者需要在 Node.js 中建立一個 RESTful API

步驟 2 - 現在,開始從 C++ 發出 HTTP 請求。這可以使用 cURL 等 C++ 庫來完成。使用者可以在 C++ 應用程式中建立函式來處理請求。

示例 – RESTful API

以下是如何實現 RESTful API 方法的示例。

在 Node.js 中建立 RESTful API -

const express = require('express');
const app = express();
const data = {"message": "hello world"};

app.get('/getData', (req, res) => {
   res.json(data);
});

app.post('/updateData', (req, res) => {
   data = req.body;
   res.json({ message: 'Data updated' });
});

app.listen(3000, () => {
   console.log('Server listening on port 3000');
});

從 C++ 發出 HTTP 請求 -

#include <curl/curl.h>
#include <json/json.h>

Json::Value getData() {
   CURL *curl;
   CURLcode res;
   Json::Value jsonData;

   curl = curl_easy_init();
   if (curl) {
      curl_easy_setopt(curl, CURLOPT_URL, "https://:3000/getData");
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &parseJson);
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &jsonData);
      res = curl_easy_perform(curl);
      curl_easy_cleanup(curl);
   }
   return jsonData;
}

void updateData(Json::Value jsonData) {
   CURL *curl;
   CURLcode res;
   struct curl_slist *headers = NULL;
   std::string jsonString = jsonData.toStyledString();

   headers = curl_slist_append(headers, "Content-Type: application/json");
   curl = curl_easy_init();
   if (curl) {
      curl_easy_setopt(curl, CURLOPT_URL, "https://:3000/updateData");
      curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonString.c_str());
      curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
      res = curl_easy_perform(curl);
      curl_easy_cleanup(curl);
   }
}

使用函式 -

Json::Value jsonData = getData();
jsonData["newKey"] = "newValue";
updateData(jsonData);

輸出

當用戶訪問“/getData”路由時,他們可以在控制檯中看到以下輸出。

{"message":"hello world"}

使用訊息佇列

使用訊息佇列涉及使用者設定一個訊息佇列服務(例如 RabbitMQ),以充當 C++ 和 Node.js 應用程式之間的中間體。然後,C++ 應用程式可以向佇列傳送包含 JSON 資料的訊息,Node.js 應用程式可以消費這些訊息。

這種方法可以提供一種在兩個應用程式之間傳送資料更有效的方式,因為它允許非同步通訊並可以處理大量訊息。

步驟 1 - 使用者需要設定訊息佇列服務並將其配置為處理兩個應用程式之間的通訊。

步驟 2 - 現在,使用者可以使用 AMQP-CPP 等 C++ 庫向佇列傳送訊息。

步驟 3 - 接下來,使用者可以設定功能以使用 ample 等庫從佇列中消費訊息。

使用 WebSocket

使用 WebSocket 涉及使用者在 Node.js 中設定一個 WebSocket 伺服器,並從 C++ 應用程式連線到它。這允許兩個應用程式之間進行即時雙向通訊,JSON 資料透過 WebSocket 連線傳送和接收。

這種方法可能比其他選項更有效,因為它允許低延遲通訊,並且消除了 C++ 應用程式不斷輪詢新資料的需要。

步驟 1 - 使用者需要在 Node.js 中設定一個 WebSocket 伺服器,並從 C++ 應用程式連線到它。

步驟 2 - 建立 WebSocket 連線後,使用者可以透過連線傳送和接收 JSON 資料。

我們學習了幾種在 C++ 和 Node.js 之間傳遞 JSON 資料的方法,每種方法都有其優點和缺點。

使用者可以選擇最適合其需求的方法,無論是簡單的 RESTful API、用於高效通訊的訊息佇列,還是用於即時雙向通訊的 WebSocket。

更新於: 2023年2月16日

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.