Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Native bindings for libutp

Subscribe to updates I use utp-native

Statistics on utp-native

Number of watchers on Github 63
Number of open issues 9
Average time to close an issue 1 day
Main language C++
Average time to merge a PR about 8 hours
Open pull requests 4+
Closed pull requests 1+
Last commit over 1 year ago
Repo Created over 4 years ago
Repo Last Updated over 1 year ago
Size 171 KB
Organization / Authormafintosh
Latest Releasev1.3.2
Page Updated
Do you use utp-native? Leave a review!
View open issues (9)
View utp-native activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating utp-native for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Native bindings for libutp. For more information about utp read BEP 29.

npm install utp-native

build status build status js-standard-style


var utp = require('utp-native')

var server = utp.createServer(function (socket) {
  socket.pipe(socket) // echo server

server.listen(10000, function () {
  var socket = utp.connect(10000)

  socket.write('hello world')
  socket.on('data', function (data) {
    console.log('echo: ' + data)


There two APIs available. One that mimicks the net core module in Node as much as possible and another one that allows you to reuse the same udp socket for both the client and server. The last one is useful if you plan on using this in combination with NAT hole punching.

net-like API

server = utp.createServer([onconnection])

Create a new utp server instance.

server.listen([port], [address], [onlistening])

Listen for on port. If you don't provide a port or pass in 0 a free port will be used. Optionally you can provide an interface address as well, defaults to

var addr = server.address()

Returns an address object, {port, address} that tell you which port / address this server is bound to.


Emitted when the server is listening

server.on('connection', connection)

Emitted when a client has connected to this server

server.on('error', err)

Emitted when a critical error happened


Closes the server.


Emitted when the server is fully closed. Note that this will only happen after all connections to the server are closed.


Set this property is you want to limit the max amount of connections you want to receive


An array of all the connections the server has.


Opposite of unref.


Unreferences the server from the node event loop.

connection = utp.connect(port, [host])

Create a new client connection. host defaults to localhost. The client connection is a duplex stream that you can write / read from.

address = connection.address()

Similar to server.address.


The address of the remote peer.


The port of the remote peer.


Similar to server.ref()


Similar to server.unref()


Emitted when the connection is fully closed.

connection.on('error', err)

Emitted if an unexpected error happens.


Forcefully destroys the connection.

In addition to this the connection has all the classic stream methods such as .write etc.

Socket API

The socket api allows you to reuse the same underlying UDP socket to both connect to other clients on accept incoming connections. It also mimicks the node core dgram socket api.

socket = utp()

Create a new utp socket

socket.bind([port], [host], [onlistening])

Bind the socket.


Emitted when the socket is bound.

socket.send(buf, offset, len, port, host, [callback])

Send a udp message.

socket.on('message', buffer, rinfo)

Listen for a udp message.


Close the socket.

address = socket.address()

Returns an address object, {port, address} that tell you which port / address this socket is bound to.


Emitted when the socket is fully closed.


Emitted if the socket experiences an error.

socket.listen([port], [host], [onlistening])

Start listening for incoming connections. Performs a bind as well.

socket.on('connection', connection)

Emitted after you start listening and a client connects to this socket. Connection is similar to the connection used in the net api.

connection = socket.connect(port, host)

Connect to another socket. Connection is similar to the connection used in the net api.


Dereference the socket from the node event loop.


Opposite of socket.unref()



utp-native open issues Ask a question     (View All Issues)
  • about 3 years windows prebuilt missing
  • over 3 years clarifications
  • over 3 years Error: UTP_ECONNRESET
utp-native open pull requests (View All Pulls)
  • Update
  • upgrade prebuild{,-{ci,install}}
  • Windows build fix
  • Fix VS2015 errors.
utp-native list of languages used
Other projects in C++