Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nodejs random free tcp ports

Tags:

node.js

port

tcp

My project need to setup a new port every time a new instance of my class is instantiated.

In Node.js how I can find a free TCP port to set in my new socket server? Or check if my specified port is already used or not.

like image 202
Marcos Bergamo Avatar asked Jan 20 '15 16:01

Marcos Bergamo


People also ask

Why does node use port 3000?

3000 is a somewhat arbitrary port number chosen because it allows you to experiment with express without root access (elevated privilege). Ports 80 and 443 are the default HTTP and HTTPS ports but they require elevated privilege in most environments.

Can Nodejs run on port 80?

The default port for HTTP is 80 – Generally, most web browsers listen to the default port. Below is the code implementation for creating a server in node and making it listen to port 80.


1 Answers

You can bind to a random, free port assigned by the OS by specifying 0 for the port. This way you are not subject to race conditions (e.g. checking for an open port and some process binding to it before you get a chance to bind to it).

Then you can get the assigned port by calling server.address().port.

Example:

var net = require('net');  var srv = net.createServer(function(sock) {   sock.end('Hello world\n'); }); srv.listen(0, function() {   console.log('Listening on port ' + srv.address().port); }); 
like image 52
mscdex Avatar answered Sep 23 '22 01:09

mscdex