webrtc-stun
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

webrtc-stun

100% TypeScript STUN implementation for WebRTC.

npm i webrtc-stun

Supported methods

  • RFC5389
    • BINDING
      • REQUEST
      • RESPONSE_SUCCESS / RESPONSE_ERROR

Not supported yet

Supported attributes

Not supported yet

Usage

import * as dgram from 'dgram';
import * as stun from '../src';
import * as pkg from '../package.json';
 
const socket = dgram.createSocket({ type: 'udp4' });
const tid = stun.generateTransactionId();
 
socket.on('message', msg => {
  const res = stun.createBlank();
 
  // if msg is valid STUN message
  if (res.loadBuffer(msg)) {
    // if msg is BINDING_RESPONSE_SUCCESS and valid content
    if (
      res.isBindingResponseSuccess({
        transactionId: tid,
        fingerprint: true,
      })
    ) {
      const attr = res.getXorMappedAddressAttribute();
      // if msg includes attr
      if (attr) {
        console.log('my rinfo', attr);
      }
    }
  }
 
  socket.close();
});
 
const req = stun
  .createBindingRequest(tid)
  .setSoftwareAttribute(`${pkg.name}@${pkg.version}`)
  .setFingerprintAttribute();
 
socket.send(req.toBuffer(), 19302, 'stun.l.google.com');

See also /examples directory.

/webrtc-stun/

    Package Sidebar

    Install

    npm i webrtc-stun

    Weekly Downloads

    2

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    54.6 kB

    Total Files

    57

    Last publish

    Collaborators

    • leader22