Fast port mapping with UPnP and NAT-PMP in NodeJS.
This is a fork version of nat-api.
The major differences are:
- Use typescript, so has type definition.
- Split PMP and upnp API, so you can use them individually.
- Support ESM.
- Optimize the dependencies. (only 2 up-to-dated deps)
Required: NodeJS >= 10
npm install @xmcl/nat-api
const { createUpnpClient } = require('nat-api')
const client = await createUpnpClient()
// map 25565 to 25565 for 1 min:
await client.map({
description: "Mapped by @xmcl/nat-api",
protocol: 'tcp',
public: 25565,
private: 25565,
ttl: 60 * 1000,
})
// Unmap port public and private port 25565 with TCP by default
await client.unmap({ port: 25565 })
// Get external IP
const mappings = await client.getMappings()
// see existed mappings
console.log(mappings)
// Destroy client
client.destroy()
See type definition in typescript.
- http://miniupnp.free.fr/nat-pmp.html
- http://wikipedia.org/wiki/NAT_Port_Mapping_Protocol
- http://tools.ietf.org/html/draft-cheshire-nat-pmp-03
MIT. Copyright (c) Alex