https://github.com/3p3r/node-named-pipe
Linux named pipes in NodeJS (mkfifo)
https://github.com/3p3r/node-named-pipe
fifo fifo-queue ipc named-pipes pipes
Last synced: 6 months ago
JSON representation
Linux named pipes in NodeJS (mkfifo)
- Host: GitHub
- URL: https://github.com/3p3r/node-named-pipe
- Owner: 3p3r
- License: mit
- Created: 2018-03-11T03:39:30.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-04-06T15:57:37.000Z (over 4 years ago)
- Last Synced: 2025-03-17T01:51:21.377Z (7 months ago)
- Topics: fifo, fifo-queue, ipc, named-pipes, pipes
- Language: JavaScript
- Size: 14.6 KB
- Stars: 3
- Watchers: 1
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-named-pipe
Linux named pipes in NodeJS (mkfifo)
[](https://circleci.com/gh/sepehr-laal/node-named-pipe)```bash
npm install named-pipe
```This library creates Linux pipes without the use of a C++ binding and through shell execution.
## Dependencies
None! your shell needs to support `mkfifo` though. Try `mkfifo --help` in a shell and see if you have access to it.
## Cool! what can I do with pipes (a.k.a example code)?
You can use Linux pipes for a very simple RPC. **note that Linux pipes by default will BLOCK if no other process is reading from the other end!**.
In your Node process:
```JS
const path = '/tmp/test';
await mkfifoPromise(path);
setInterval(
appendFileSync.bind(null, path,
`${new Date().toISOString()}: hello fron Node!\n`
),
1000
);
```And in a separate shell:
```bash
$ tail -f /tmp/test
2018-03-11T05:37:16.328Z: hello fron Node!
2018-03-11T05:37:16.328Z: hello fron Node!
...
```Full source code of this example is located in [example.js](example.js).
## API
This library provides three variants of mkfifo in NodeJS.
### sync
Signature:
```TS
const mkfifoSync: (path: string, permission?: number = 644);
```Usage:
```JS
const { mkfifoSync } = require('named-pipe');
mkfifoSync('/tmp/fifo');
```### promise
```TS
const mkfifoPromise: (path: string, permission?: number = 644);
```Usage:
```JS
const { mkfifoPromise } = require('named-pipe');
await mkfifoPromise('/tmp/fifo').catch(console.error);
```### async
```TS
const mkfifo: (path: string, permission?: number = 644, callback: Function);
```Usage:
```JS
const { mkfifo } = require('named-pipe');
mkfifo('/tmp/fifo', 644, (error) => {
// 'error' will be non-null if unable to create the pipe
});
```