webrtc-stun
v3.0.0
Published
Pure TypeScript STUN implementation.
Downloads
35
Maintainers
Readme
webrtc-stun
100% TypeScript STUN implementation for WebRTC.
npm i webrtc-stun
Supported methods
- RFC5389
- BINDING
- REQUEST
- RESPONSE_SUCCESS / RESPONSE_ERROR
- BINDING
Not supported yet
- RFC5389
- BINDING
- INDICATION
- BINDING
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.