kirm / sip.js

Session Initiation Protocol for node.js
MIT License
427 stars 171 forks source link

How to run SIP proxy on a cluster #83

Closed digttelecom closed 9 years ago

digttelecom commented 9 years ago

How to run SIP proxy on a cluster (using module "cluster" )?

kirm commented 9 years ago

I do not have any direct experience with cluster module. But there is a lengthy discussion of using it in issue #23.

kirm commented 9 years ago

I think this simplest working example

var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
var sip = require('sip');

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
      worker = cluster.fork();
  }

  cluster.on('online', function (worker, code, signal) {
      console.log('worker ' + worker.process.pid + ' online');
  });
} 
else {
  var tcpTransport = sip.makeTransport({
      udp: false,
      tcp: true
      //logger: { recv: console.log, send: console.log} 
  }, onReceive);

  function onReceive(message, remote) {
      if (message.method) {
          tcpTransport.send(remote, sip.makeResponse(request, 486, 'Busy Here'));
      }
  }
}