All the examples of non-HTTP/TCP servers seem to all be within self-contained files. I wanted to start these workers from a file however passing in a file path seems to cause cluster to automatically treat it as a HTTP server or similar and tries to call the 'on' and 'listenFD.bind' methods on it. Commenting out the section of code in worker.js seems to allow this to work as I would expect.
Perhaps cluster could check whether 'on' and 'listenFD.bind' methods exist before trying to call them?
var cluster = require('cluster');
var proc = cluster('./app')
.set('workers', 4)
.use(cluster.debug())
.start();
Code in worker.js causing issue
// demote usr/group
if (this.server) {
this.server.on('listening', function(){
var group = self.options.group;
if (group) process.setgid(group);
var user = self.options.user;
if (user) process.setuid(user);
});
// stdin
this.stdin.on('fd', this.server.listenFD.bind(this.server));
}
All the examples of non-HTTP/TCP servers seem to all be within self-contained files. I wanted to start these workers from a file however passing in a file path seems to cause cluster to automatically treat it as a HTTP server or similar and tries to call the 'on' and 'listenFD.bind' methods on it. Commenting out the section of code in worker.js seems to allow this to work as I would expect.
Perhaps cluster could check whether 'on' and 'listenFD.bind' methods exist before trying to call them?
app.js
server.js
Code in worker.js causing issue