示例#1
0
    function _connect(_, cb) {
        cb = once(cb);
        var client = fast.createClient(opts);

        client.on('connectAttempt', function (number, delay) {
            var level;
            if (number === 0) {
                level = 'info';
            } else if (number < 5) {
                level = 'warn';
            } else {
                level = 'error';
            }

            log[level]({ host: opts.host, attempt: number, delay: delay },
                'connect attempted');
        });

        client.once('connect', function onConnect() {
            client.removeAllListeners('error');
            cb(null, client);
        });

        client.once('error', function onConnectError(err) {
            client.removeAllListeners('connect');
            cb(err);
        });
    }
示例#2
0
文件: app.js 项目: lrossy/tests
 create   : function(callback) {
     var RPCclient = fast.createClient({host: host, port: parseInt(RPCport),retry:{retries:1},connectTimeout:500});
     // parameter order: err, resource
     // new in 1.0.6
     RPCclient.on('connect', function () {
         console.log('API ' + ' RPC@' + uri + '> Connected!');
         callback(null, RPCclient);
     });
     RPCclient.on('error', function (err) {
         console.log('TCP-RPC Pool Connection ' +  ' RPC@' + host + ':'+ RPCport + '>',err);
         callback("connection Error");
     });
 },
ConnectionPool.prototype.addHost = function addHost(host) {
    if (this.closed) {
        return;
    }

    var self = this;
    var cRing = new Ring({
        priorityFunc: leastRequestsPriority
    });
    this.ring.add(host, cRing);
    cRing.on('online', function () {
        self.log.debug({host: host}, 'host online');
        self.ring.activate(host);
    });
    cRing.on('offline', function () {
        self.log.debug({host: host}, 'host offline');
        self.ring.deactivate(host);
    });

    // setup ring of connections
    for (var i = 0; i < this.max; i++) {
        var key = '' + i;
        // FIXME: tune defaults
        var client = fast.createClient({
            host: host,
            port: this.port,
            connectTimeout: this.connectTimeout,
            retry: this.retry,
            reconnect: true
        });
        client.log = this.log.child({
            fastClient: host + '-' + i
        });

        cRing.add(key, client);
        client.on('connect', cRing.activate.bind(cRing, key));
        client.on('close', cRing.deactivate.bind(cRing, key));
        client.on('error', this.emit.bind(this, 'error'));
    }
};