Skip to content

Latest commit

 

History

History
63 lines (42 loc) · 2.02 KB

README.md

File metadata and controls

63 lines (42 loc) · 2.02 KB

Unix2WS.js

Unix2WS allows you to easily stream data from any input to socket.io.

This tool supports TCP, UNIX sockets as input, or named-pipe (FIFO)

Installation

  npm install -g unix2ws

Usage

The command line tool unix2ws opens a socket.io server. Any content received through the specified source will be sent to all the Socket.IO clients.

I created this tool to be able to easily stream any line by line output from a command-line application to the browser.

By default, unix2ws will try to parse every line received as a JSON object.

Usage: unix2ws

Examples:
  unix2ws -s 10001 --ws-port 10000
  unix2ws -s unix.sock --ws-port 10000
  unix2ws -f fifo --ws-port 10000


Options:
  -d, --debug        Prints debugging information     [default: false]
  -j, --json         Try to JSON.parse input lines    [default: true]
  -p, --ws-port      Port to use for socket.io        [default: 10000]
  -s, --from-socket  Opens TCP/UNIX socket for input
  -f, --from-fifo    Creates named pipe for input

Example

Open the example HTML file in your browser and give it a try, you'll see it's pretty simple

Limitations

  • It's at the moment impossible to create Unix FIFOs from node (See this message on stackoverlow), I create it in a nasty way at the moment
  • UNIX sockets & UNIX FIFOs are, of course, not supported on windows

TODO

I'll probably add the following features in a near future:

  • New parameter --event to specify the event name used to propagate the data (which is "data" at the moment)
  • I'd like to add a new feature allowing me to give a node.js script as parameter, this script would expose a function receiving the socket object. I could therefore define (or reuse) some backend-side code (handshake, authentication, ...)
module.exports = function(socket){
  socket.on("authenticate", function(data){
    return true;
  });
}
  • I have a lot of other ideas, but at the same time I think it would be cool to keep that tool simple and light