/ipc

IPC/TCP Networking Utility to connect several processes with great concurrency.

Primary LanguageTypeScriptMIT LicenseMIT

@sofidev/ipc

Note: This is a fork of kyranet/veza We use msgpackr instead of binarytf for encoding/decoding messages

npm version npm downloads

About

@sofidev/ipc is a protocol that operates over either IPC or TCP with the only difference of one line of code to switch between the two. Inspired on node-ipc, it seeks to use modern, fast, and intuitive APIs, as well as exposing all the underlying back-ends for much higher customizability and extensibility, as well as a HTTP-like protocol where you can send a message and optionally receive a response for it.

Socket Support

  • Unix Socket or Windows Socket.
  • TCP Socket.
  • TLS Socket.
  • UDP Sockets.

TLS: TLS sockets can be achieved by extending @sofidev/ipc to use SSL handshakes. To keep things simple and tidy, this is not shipped in core, but will be considered for future releases.

UDP: UDP sockets are not supported due to @sofidev/ipc's requirement for messages to be reliably received in order.

Messaging

All messages are encoded and decoded using msgpackr, which allows a messages to be sent using the least amount of bytes possible, increasing throughput; plus a 11-byte header at the start of each message. More information available in PROTOCOL.

Example

You can find examples of code here.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request!