Skip to content

client.close in node does not allow the process to exit #160

@jfhbrook

Description

@jfhbrook

So I have a chunk of code that looks like this:

var http = require('http'),
    engineServer = require('engine.io'),
    engineClient = require('engine.io-client');

var server, client;

server = http.createServer(function (req, res) {
  res.end('hello!');
}).listen(8080, function (err) {
  if (err) throw err;

  console.log('attaching server...');
  engineServer.attach(server);

  console.log('creating client...');
  client = new engineClient.Socket({ port: 8080 });

  client.on('open', function (socket) {

    console.log('client is open');

    client.on('close', function () {
      console.log('client is closed');

      console.log('closing server...');
      server.close(function (err) {
        if (err) throw err;
        console.log('server is closed');
        console.log('waiting for process to exit...');
      });
    });

    console.log('closing client...');
    client.close();
  });
});

When I run it, I get:

$ node test.js 
attaching server...
creating client...
client is open
closing client...
client is closed
closing server...
server is closed
waiting for process to exit...

...and then the process never exits. Am I missing something here?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions