繁体   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