Skip to content

Instantly share code, notes, and snippets.

@daicoden
Last active December 27, 2015 20:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daicoden/7386262 to your computer and use it in GitHub Desktop.
Save daicoden/7386262 to your computer and use it in GitHub Desktop.
Patch for speeding up webrtc with the reliable shim.
From 4372eada0cb413d3834abb6a485f0fee5e72345e Mon Sep 17 00:00:00 2001
From: Matt Wilson <mattwilson@squareup.com>
Date: Sat, 9 Nov 2013 06:11:06 -0800
Subject: [PATCH] Booo Fuckin Ya.
---
assets/javascripts/vendor/peer.js | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/assets/javascripts/vendor/peer.js b/assets/javascripts/vendor/peer.js
index 0cd852d..5320e73 100644
--- a/assets/javascripts/vendor/peer.js
+++ b/assets/javascripts/vendor/peer.js
@@ -60,13 +60,15 @@ BufferBuilder.prototype.getBuffer = function() {
};
exports.BinaryPack = {
unpack: function(data){
- var unpacker = new Unpacker(data);
- return unpacker.unpack();
+ return JSON.parse(data);
},
pack: function(data, utf8){
- var packer = new Packer(utf8);
+/* var packer = new Packer(utf8);
var buffer = packer.pack(data);
return buffer;
+*/
+ buffer = JSON.stringify(data);
+ return buffer;
}
};
@@ -755,7 +757,7 @@ function Reliable(dc, debug) {
Reliable.prototype.send = function(msg) {
// Determine if chunking is necessary.
var bl = util.pack(msg);
- if (bl.size < this._mtu) {
+ if (bl.length < this._mtu) {
this._handleSend(['no', bl]);
return;
}
@@ -913,7 +915,7 @@ Reliable.prototype._handleMessage = function(msg) {
var n = msg[2];
var chunk = msg[3];
- data.chunks[n] = new Uint8Array(chunk);
+ data.chunks[n] = chunk;
// If we get the chunk we're looking for, ACK for next missing.
// Otherwise, ACK the same N again.
@@ -933,7 +935,7 @@ Reliable.prototype._handleMessage = function(msg) {
// Chunks BL into smaller messages.
Reliable.prototype._chunk = function(bl) {
var chunks = [];
- var size = bl.size;
+ var size = bl.length;
var start = 0;
while (start < size) {
var end = Math.min(size, start + this._mtu);
@@ -1000,7 +1002,8 @@ Reliable.prototype._complete = function(id) {
util.log('Completed called for', id);
var self = this;
var chunks = this._incoming[id].chunks;
- var bl = new Blob(chunks);
+// var bl = new Blob(chunks);
+ var bl = chunks.join('')
util.blobToArrayBuffer(bl, function(ab) {
self.onmessage(util.unpack(ab));
});
@@ -1282,25 +1285,28 @@ var util = {
// Binary stuff
blobToArrayBuffer: function(blob, cb){
+ cb(blob)
+/*
var fr = new FileReader();
fr.onload = function(evt) {
cb(evt.target.result);
};
fr.readAsArrayBuffer(blob);
+*/
},
blobToBinaryString: function(blob, cb){
- var fr = new FileReader();
- fr.onload = function(evt) {
- cb(evt.target.result);
- };
- fr.readAsBinaryString(blob);
+ cb(blob);
},
binaryStringToArrayBuffer: function(binary) {
+ return binary
+/* return JSON.parse(binary) */
+/*
var byteArray = new Uint8Array(binary.length);
for (var i = 0; i < binary.length; i++) {
byteArray[i] = binary.charCodeAt(i) & 0xff;
}
return byteArray.buffer;
+*/
},
randomToken: function () {
return Math.random().toString(36).substr(2);
--
1.8.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment