Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a named pipe in node.js?

How to create a named pipe in node.js?

P.S.: For now I'm creating a named pipe as follows. But I think this is not best way

var mkfifoProcess = spawn('mkfifo',  [fifoFilePath]); mkfifoProcess.on('exit', function (code) {     if (code == 0) {         console.log('fifo created: ' + fifoFilePath);     } else {         console.log('fail to create fifo with code:  ' + code);     } }); 
like image 609
wako Avatar asked Jul 31 '12 22:07

wako


1 Answers

Working with named pipes on Windows

Node v0.12.4

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'); })  // == Client part == // var client = net.connect(PIPE_PATH, function() {     L('Client: on connection'); })  client.on('data', function(data) {     L('Client: on data:', data.toString());     client.end('Thanks!'); });  client.on('end', function() {     L('Client: on end'); }) 

Output:

Server: on listening Client: on connection Server: on connection Client: on data: Take it easy! Server: on data: Thanks! Client: on end Server: on end Server: on close

Note about pipe names:

C/C++ / Nodejs:
\\.\pipe\PIPENAME CreateNamedPipe

.Net / Powershell:
\\.\PIPENAME NamedPipeClientStream / NamedPipeServerStream

Both will use file handle:
\Device\NamedPipe\PIPENAME

like image 187
befzz Avatar answered Oct 19 '22 11:10

befzz