@mothepro/fancy-p2p
Version:
A quick and efficient way to form p2p groups in the browser
26 lines • 1.23 kB
JavaScript
/* Create ArrayBuffers to send to client and server. */
const encoder = new TextEncoder;
export var MessageType;
(function (MessageType) {
MessageType[MessageType["offer"] = 0] = "offer";
MessageType[MessageType["answer"] = 1] = "answer";
MessageType[MessageType["pranswer"] = 2] = "pranswer";
MessageType[MessageType["rollback"] = 3] = "rollback";
})(MessageType || (MessageType = {}));
/** Helper to build a group proposal or rejection. */
export function buildProposal(accept, ...ids) {
const data = new DataView(new ArrayBuffer(1 /* CHAR */ + 2 /* SHORT */ * ids.length));
data.setInt8(0, +accept);
for (let i = 0; i < ids.length; i++)
data.setUint16(1 /* CHAR */ + i * 2 /* SHORT */, ids[i], true);
return data.buffer;
}
/** Sends a packed SDP to the server for rerouting. */
export function buildSdp(to, { type, sdp }) {
const sdpBuffer = encoder.encode(sdp), data = new DataView(new ArrayBuffer(2 /* SHORT */ + 1 /* CHAR */ + sdpBuffer.byteLength));
data.setUint16(0, to, true);
data.setUint8(2 /* SHORT */, MessageType[type]);
new Uint8Array(data.buffer, 1 /* CHAR */ + 2 /* SHORT */).set(sdpBuffer);
return data.buffer;
}
//# sourceMappingURL=builders.js.map