Socket
Socket
Sign inDemoInstall

daemonctrl

Package Overview
Dependencies
1
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    daemonctrl

Command-line control your Node.js daemon


Version published
Weekly downloads
8
increased by700%
Maintainers
1
Install size
33.2 kB
Created
Weekly downloads
 

Readme

Source

daemonctrl

Control your daemon via the command line. A command is the first word sent after the flags passed to a node script. The commandArgs is anything after the command and is not split on spaces.

Example: node send.js --flags [command] [commandArgs]

Docs

socketOptions(options)

Allows you to set options for how the socket is setup. This should be sent with the same params from the daemon and sender.

Options are path, ip, port.

send(endListener)

Sends the command sent in the args to the daemon. endListener is added as a listner for end which fires when the command is sent. send can return falsey if no command was sent (or start was sent and we're not spawning). See the Notes section for why. If this fires the error event with the code ECONNREFUSED then the daemon probably isn't running.

To pipe the response back to another stream (like stdout) just run:

daemonctrl.send().pipe(process.stdout);

fork(modulePath)

Tells send() to fork when the start command is sent and return an instance of ChildProcess. The endListener is fired with a ChildProcess. If one of the arguments sent to the calling process is -fork or --fork we will *NOT pass that to the forked child as a helper to prevent infinite forking.

listen(listeningListener)

This command is run from the daemon itself on start. When listening is fired you can start running your app. listeningListener is added as a listener for the listening event. If this fires the error event with the code EADDRINUSE then the daemon is probably already running.

The command event is fired when a command is received. The listeners are sent (command, commandArgs, socket). You can respond to the sender by writing to the socket. You are required to end the socket.

Example:

daemonctrl.listen(function() {
    myApp.run();
});

end()

Stops listening. You should run this on process SIGINT, SIGTERM, and exit.

strip()

Removes the command from process.argv if you use something that complains about invalid flags (like node-flags), run this first.

timeout(newTimeoutMS)

Sets the timeout on the listening side for getting a response back from the server. Defaults to 5000. On timeout, the send emitter emits error.

Notes

If you want to use the same script for sending and starting you just need to check to see if send returned a falsey value.

var sender = daemonctrl.send();
if (sender) {
    //send command to daemon
    sender.pipe(process.stdout);
    //beforeExit gets called when the event-loop is exausted which means the socket closed
    process.on('beforeExit', function() {
        process.stdout.write("\n");
    });
    return;
}
//running in the daemon since no command (or command was "start") was sent 
daemonctrl.listen(function() {
    myApp.run();
});

By James Hartig

Keywords

FAQs

Last updated on 28 Mar 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc