/**! * sendmessage - index.js * * Copyright(c) fengmk2 and other contributors. * MIT Licensed * * Authors: * fengmk2 (http://fengmk2.github.com) */ 'use strict'; /** * Module dependencies. */ var IS_NODE_DEV_RUNNER = /node\-dev$/.test(process.env._ || ''); if (!IS_NODE_DEV_RUNNER && process.env.IS_NODE_DEV_RUNNER) { IS_NODE_DEV_RUNNER = true; } module.exports = function send(child, message) { if (typeof child.send !== 'function') { // not a child process return setImmediate(child.emit.bind(child, 'message', message)); } if (IS_NODE_DEV_RUNNER || process.env.SENDMESSAGE_ONE_PROCESS) { // run with node-dev, only one process // https://github.com/node-modules/sendmessage/issues/1 return setImmediate(child.emit.bind(child, 'message', message)); } // cluster.fork(): child.process is process // childprocess.fork(): child is process var connected = child.process ? child.process.connected : child.connected; if (connected) { return child.send(message); } // just log warnning message var pid = child.process ? child.process.pid : child.pid; var err = new Error('channel closed'); console.warn('[%s][sendmessage] WARN pid#%s channel closed, nothing send\nstack: %s', Date(), pid, err.stack); };