Node.js Port Scanner

By  on  

Node.js has become an incredible tool for creating services or utilities that act like a service.  Usually it's npm start, wait a moment, and you'll see the utility provide an address and port; a good example being localhost:8000.  One thing that bugs me about this pattern is if you have many service-based utilities that you work on, you wind up running into "port in use" errors, after which you need to look through all of your utilities to see which one to turn off.

There's an easy solution to this problem:  Node Port Scanner.  This utility provides methods for finding in use or available ports on a given host!

Using Port Scanner

The most common use case to solve port collisions would be findAPortNotInUse:

var portscanner = require('portscanner');

// 127.0.0.1 is the default hostname; not required to provide
portscanner.findAPortNotInUse([3000, 3010], '127.0.0.1').then(port => {
  console.log(`Port ${port} is available!`);

  // Now start your service on this port...
});

Providing a series of ports and then starting on the first available port is made simple -- no more collisions.

You can also check for a given port's status, or check for ports in use:

// Get port status
portscanner.checkPortStatus(3000, '127.0.0.1').then(status => {
  // Status is 'open' if currently in use or 'closed' if available
  console.log(status);
});

// Find port in use
portscanner.findAPortInUse([3000, 3005, 3006], '127.0.0.1').then(port => {
  console.log('PORT IN USE AT: ' + port);
});

Using this port scanner utility is incredibly simple and the easiest way to get your service to run on any available port.  Hardcoded port usage, when unnecessary, only leads to frustration!

Recent Features

  • By
    Create a CSS Flipping Animation

    CSS animations are a lot of fun; the beauty of them is that through many simple properties, you can create anything from an elegant fade in to a WTF-Pixar-would-be-proud effect. One CSS effect somewhere in between is the CSS flip effect, whereby there's...

  • By
    9 Mind-Blowing Canvas Demos

    The <canvas> element has been a revelation for the visual experts among our ranks.  Canvas provides the means for incredible and efficient animations with the added bonus of no Flash; these developers can flash their awesome JavaScript skills instead.  Here are nine unbelievable canvas demos that...

Incredible Demos

  • By
    External Site Link Favorite Icons Using MooTools and CSS

    I recently came upon an interesting jQuery article about how you can retrieve all external links within a page, build the address of the site's favorite icon, and place the favorite icon along side the link. I've chosen a different approach which...

  • By
    9 Incredible CodePen Demos

    CodePen is a treasure trove of incredible demos harnessing the power of client side languages.   The client side is always limited by what browsers provide us but the creativity and cleverness of developers always pushes the boundaries of what we think the front end can do.  Thanks to CSS...

Discussion

    Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!