我有兩個在Linux上運行的進程,一個是NodeJs應用程序,另一個是C++應用程序。 NodeJs應用程序從也是NodeJS應用程序的服務器接收數據,現在該數據將由C++應用程序使用。在Linux上的兩個應用程序之間共享數據
現在我正在將數據寫入NodeJs應用程序的文本文件中,然後從C++應用程序中讀取數據。但是這很慢,它也會導致問題,因爲文件可以異步寫入。
我的問題是什麼是在這兩個應用程序之間共享數據的最佳方式,同時牢記可以異步接收數據?
我有兩個在Linux上運行的進程,一個是NodeJs應用程序,另一個是C++應用程序。 NodeJs應用程序從也是NodeJS應用程序的服務器接收數據,現在該數據將由C++應用程序使用。在Linux上的兩個應用程序之間共享數據
現在我正在將數據寫入NodeJs應用程序的文本文件中,然後從C++應用程序中讀取數據。但是這很慢,它也會導致問題,因爲文件可以異步寫入。
我的問題是什麼是在這兩個應用程序之間共享數據的最佳方式,同時牢記可以異步接收數據?
在NodeJS中爲C++應用程序創建REST API。 (C++客戶端:https://github.com/mrtazz/restclient-cpp)。
例子:
var express = require('express');
var app = express();
app.get('/data', function (req, res) {
var dataObjectToSendHere = 'here';
res.json(dataObjectToSendHere);
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
使用套接字與本地主機,我認爲是好的。
爲了幫助你多一點,你需要的是件事情:從一個應用程序發送數據到另一個(你用什麼文件了),以及異步從另一個信號一個進程(告訴它數據可用)。
您可以實際上是用文件做到這一點,但是不是隻使用單個文件,而是每次使用多個文件時,每次有新數據。將它們寫入其他進程監視更改的特殊目錄中,當它檢測到新文件時,它會簡單地讀取該文件並將其刪除。
另一種方法是通過命名管道或套接字(本地(即AF_LOCAL
)或「普通」)建立更直接的連接。然後在可以處理信令和批量數據傳輸的TCP或UDP之上創建一個簡單的協議。
當然,因爲一個應用程序是一個node.js應用程序,您可以簡單地使用類似REST的界面,並讓其他程序輪詢新數據。爲此,您不需要任何類型的異步信號,而是使用node.js應用程序收集和緩存所有傳入數據,並且當其他應用程序輪詢數據時,您將傳輸自上次輪詢以來到達的所有數據。
還有很多其他方法可以做到這一點,只需閱讀我在評論中鏈接到的文章,即可詳細瞭解所有這些文章。
執行[*進程間通信*](https://en.wikipedia.org/wiki/Inter-process_communication)的方法很多,而文件只是其中之一。 –