script-change-transform-worker.js (1452B)
1 function appendToBuffer(buffer, value) { 2 const result = new ArrayBuffer(buffer.byteLength + 1); 3 const byteResult = new Uint8Array(result); 4 byteResult.set(new Uint8Array(buffer), 0); 5 byteResult[buffer.byteLength] = value; 6 return result; 7 } 8 9 onrtctransform = (event) => { 10 const transformer = event.transformer; 11 12 transformer.reader = transformer.readable.getReader(); 13 transformer.writer = transformer.writable.getWriter(); 14 15 function process(transformer) 16 { 17 transformer.reader.read().then(chunk => { 18 if (chunk.done) 19 return; 20 if (transformer.options.name === 'sender1') 21 chunk.value.data = appendToBuffer(chunk.value.data, 1); 22 else if (transformer.options.name === 'sender2') 23 chunk.value.data = appendToBuffer(chunk.value.data, 2); 24 else { 25 const value = new Uint8Array(chunk.value.data)[chunk.value.data.byteLength - 1]; 26 if (value !== 1 && value !== 2) 27 self.postMessage("unexpected value: " + value); 28 else if (value === 2) 29 self.postMessage("got value 2"); 30 chunk.value.data = chunk.value.data.slice(0, chunk.value.data.byteLength - 1); 31 } 32 transformer.writer.write(chunk.value); 33 process(transformer); 34 }); 35 } 36 37 process(transformer); 38 }; 39 self.postMessage("registered");