簡體   English   中英

節點js中的Windows命名管道(首選共享內存)

[英]Windows named pipe in node js (preferred shared memory)

我使用命名管道在Windows中的兩個進程之間共享一些數據。 一個是節點進程,另一個是C#進程。 以下是我在節點進程中使用的代碼示例:

var net = require('net');

var PIPE_NAME = "mypipe";
var PIPE_PATH = "\\\\.\\pipe\\" + PIPE_NAME;

var L = console.log;

var server = net.createServer(function(stream) {
    L('Server: on connection')

    stream.on('data', function(c) {
        L('Server: on data:', c.toString());
    });

    stream.on('end', function() {
        L('Server: on end')
        server.close();
    });

    stream.write('Take it easy!');
});

server.on('close',function(){
    L('Server: on close');
})

server.listen(PIPE_PATH,function(){
    L('Server: on listening');
})

我在c#中使用NamedPipeClientStream來讀取數據。 我在兩側循環執行此操作,例如我的節點進程是生產者而C#進程是消費者。

這很好用。

但有時C#循環會掛起,在我的節點進程中,我想覆蓋舊數據上的新數據。 我想知道我是否可以在我的管道中指定一些最大尺寸(我在nodejs中創建的那個)或者數據的超時但是在標准文檔中找不到這樣的東西。

如果無法以這種方式解決,有一個共享的內存路由來解決問題,但我找不到任何穩定的nodejs共享內存庫,它在windows上運行良好(我現在沒有太多時間寫一個)。 我需要一些指示才能朝着正確的方向前進。

任何建議表示贊賞。 謝謝。

編輯:我真的想用共享內存實現上面的東西,因為我需要快速共享大量數據,我需要調整性能。 關於如何實現它的任何指針?

我想出了一種根據我的要求在nodejs的可寫流中使用drain事件的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM