multiaddr implementation in JavaScript.
> npm install multiaddr --saveconst multiaddr = require('multiaddr')Same as in Node.js, you just have to transpile it with Webpack before serving the code. Follow the webpack config example.
Same as in Node.js, you just have to browserify the code before serving it. See the browserify repo for how to do that.
Make the multiaddr.js available through your server and load it using a normal <script> tag, this will export the multiaddr on the window object, such that:
const multiaddr = window.multiaddrYou will need to use Node.js Buffer API compatible, if you are running inside the browser, you can access it by multiaddr.Buffer or you can install Feross's Buffer.
const multiaddr = require('multiaddr')
const addr = multiaddr("/ip4/127.0.0.1/udp/1234")
// <Multiaddr /ip4/127.0.0.1/udp/1234>
addr.buffer
// <Buffer >
addr.toString()
// /ip4/127.0.0.1/udp/1234
// construct with Buffer
addr = multiaddr(addr.buffer)
// <Multiaddr /ip4/127.0.0.1/udp/1234>// get the multiaddr protocol codes
addr.protoCodes()
// [4, 6]
// get the multiaddr protocol string codes
addr.protoNames()
// ['ip4', 'tcp']
// get the multiaddr protocol description objects
addr.protos()
// [{code: 4, name: 'ip4', size: 32},
// {code: 17, name: 'udp', size: 16}]// get a node friendly address object
addr.nodeAddress()
// {family: "IPv4", port:1234, address: "127.0.0.1"} - note no UDP :(
addr.fromNodeAddress({family: "IPv4", port:1234, address: "127.0.0.1"}, 'udp')
// /ip4/127.0.0.1/udp/1234
// handles the stupid string version too
addr = multiaddr.fromStupidString("udp4://127.0.0.1:1234")
// <Multiaddr /ip4/127.0.0.1/udp/1234>
addr.toStupidString(buf)
// udp4://127.0.0.1:1234addr.encapsulate('/sctp/5678')
// <Multiaddr /ip4/127.0.0.1/udp/1234/sctp/5678>
addr.decapsulate('/udp') // up to + inc last occurrence of this subaddr
// <Multiaddr /ip4/127.0.0.1>Multiaddr allows expressing tunnels very nicely.
const printer = multiaddr('/ip4/192.168.0.13/tcp/80')
const proxy = multiaddr('/ip4/10.20.30.40/tcp/443')
const printerOverProxy = proxy.encapsulate(printer)
// <Multiaddr /ip4/10.20.30.40/tcp/443/ip4/192.168.0.13/tcp/80>
const proxyAgain = printerOverProxy.decapsulate('/ip4')
// <Multiaddr /ip4/10.20.30.40/tcp/443>