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); } });
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With