node-memcache icon indicating copy to clipboard operation
node-memcache copied to clipboard

client.close() does not appear to work

Open rhythmicdevil opened this issue 12 years ago • 4 comments

Hi, I appreciate your clear documentation, its the primary reason I chose this library vs. others. I cant seem to get the close method to work though. Would you mind pointing out where I am going wrong? In the code below the close event never fires.

One other question I have is why the Client constructor requires the host and port but then I also have to set it on the client.

Thanks Steve

var memcache = require('memcache');

var client = new memcache.Client('localhost', 11211);
client.port = 11211;
client.host = 'localhost';


client.on('connect', function(){
   console.log('Connected');
});

client.on('close', function(){
    console.log('Disconnected');
});

client.on('timeout', function(){
    console.log('Timeout');
});

client.on('error', function(e){
    console.log(e);
});

// connect to the memcache server after subscribing to some or all of these events
client.connect()

/*

client.set('flags', 1, function(err, result){

    if(err){
        console.log(err);
    } else {
        console.log('Set: ' + result);
    }

}, 1000);


client.get('flags', function(err, result){

    if(err){
        console.log(err);
    } else {
        console.log('Get: ' + result);
    }

});

client.increment('flags', 1, function(err, result){

    if(err){
        console.log(err);
    } else {
        console.log('Increment: ' + result);
    }

});


client.get('flags', function(err, result){

    if(err){
        console.log(err);
    } else {
        console.log('Get: ' + result);
    }

});

client.delete('flags', function(err, result){

    if(err){
        console.log(err);
    } else {
        console.log('Delete: ' + result);
    }

});
*/
client.close();

rhythmicdevil avatar Feb 21 '13 15:02 rhythmicdevil

You don't need to set the port or host. This will do the same: var client = new memcache.Client();

You should do a close() in the callback of connect()

ghost avatar Mar 24 '13 18:03 ghost

Connect does not take a callback as far as I can see.

Client.prototype.connect = function () {
    if (!this.conn) {

rhythmicdevil avatar Apr 15 '13 15:04 rhythmicdevil

It has something to do with the amount of time it takes to establish the connection to the server. The following closes the connection

var MySQL = require('mysql'),
    Memcache = require('memcache');


Client = new Memcache.Client('localhost', 11211);
Client.port = 11211;
Client.host = 'localhost';

Client.on('connect', function(){
   console.log( {
        'log':'info', 
        'msg':'Memcache is connected'
    });  
});

Client.on('close', function(){
   console.log( {
        'log':'info', 
        'msg':'Memcache is disconnected'
    });
});

Client.on('timeout', function(){
   console.log( {
        'log':'info', 
        'msg':'Memcache has timedout'
    });
});

Client.on('error', function(e){
   console.log( {
        'log':'exception', 
        'msg':'Error in memcache',
        'error' : e
    }); 
});

Client.connect();

setTimeout(function(){

    Client.close();    

}, 5000);

rhythmicdevil avatar Apr 15 '13 15:04 rhythmicdevil

client.on('connect', function(){
   //do stuff
   client.close()
});

ghost avatar Apr 17 '13 19:04 ghost