Thanks to visit codestin.com
Credit goes to github.com

Skip to content

picobellz/xpipe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xpipe1

Use cross-platform IPC paths in Node.js.

Background

In Node.js - instead of using TCP - you also can take IPC2 to communicate to services like

  • web servers (NGINX, Caddy)
  • databases (redis, PostgreSQL, MongoDB)
  • etc.

or to interconnect Node.js apps, Electron frontends/backends and so on.

This can lead to large speed gains.

On unixoid operating systems - e.g. Linux and OS X - we use Unix domain sockets that are referred by file descriptors.

Windows has named pipes for it, living in the root directory of the NPFS3, mounted under the special path \\.\pipe\.

To mitigate these differences and to to support writing portable code, xpipe was born...

Installation

npm install xpipe

Usage

// CommonJS (CJS) require
const xpipe = require('xpipe');
// ECMAScript Modules (ESM) import
import xpipe from 'xpipe';

xpipe.prefix

let prefix = xpipe.prefix;
console.log(`prefix:  ${prefix}`);

//   [empty string] on Linux and macOS
//   "//./pipe/" on Windows

xpipe.eq

let ipcPath = xpipe.eq('/tmp/my.sock');
console.log(`ipcPath: ${ipcPath}`);

//   Returns a cross-platform IPC path:
//   "/tmp/my.sock" on Linux and OS X
//   "//./pipe/tmp/my.sock" on Windows

When did Windows start accepting forward slash as a path separator?

Every Windows API/kernel ever has accepted "/" as a path separator. So has every version of MS-DOS beginning with DOS 2.0 (the first version to support subdirectories).

It's only been in command lines that "/" was not allowed when it had already been used as a switch delimiter in MS-DOS 1.0 (introduced by IBM).

This behaviour could be bypassed (at least on modern Windows systems) by including the path in double quotation marks:

  • cd c:/Windows and cd /Windows work4
  • dir ./ /B fails but dir "./" /B works

Further articles:

 

Footnotes

  1. xpipe stands for xp (cross-platform) IPC path equalizer

  2. inter-process communication, see https://en.wikipedia.org/wiki/Inter-process_communication

  3. named pipe file system (in-memory)

  4. on Windows "/" without a leading drive letter represents the root of the current drive

About

Use cross-platform IPC paths in Node.js.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •