Send webpage config in multiple parts

Change-Id: I87b90ea5ec498e93647bb04012a51f687c05a4a0
diff --git a/aos/network/www/config_handler.ts b/aos/network/www/config_handler.ts
index 6615f39..048c2ba 100644
--- a/aos/network/www/config_handler.ts
+++ b/aos/network/www/config_handler.ts
@@ -27,7 +27,7 @@
   }
 
   printConfig() {
-    for (const i = 0; i < this.config.channelsLength(); i++) {
+    for (let i = 0; i < this.config.channelsLength(); i++) {
       const channel_div = document.createElement('div');
       channel_div.classList.add('channel');
       this.tree_div.appendChild(channel_div);
diff --git a/aos/network/www/proxy.ts b/aos/network/www/proxy.ts
index 7bcf575..7491ad5 100644
--- a/aos/network/www/proxy.ts
+++ b/aos/network/www/proxy.ts
@@ -90,8 +90,8 @@
 
   // Handle messages on the DataChannel. Handles the Configuration message as
   // all other messages are sent on specific DataChannels.
-  onDataChannelMessage(e: MessageEvent): void {
-    const fbBuffer = new flatbuffers.ByteBuffer(new Uint8Array(e.data));
+  onConfigMessage(data: Uint8Array): void {
+    const fbBuffer = new flatbuffers.ByteBuffer(data);
     this.configInternal = Configuration.getRootAsConfiguration(fbBuffer);
     for (const handler of Array.from(this.configHandlers)) {
       handler(this.configInternal);
@@ -146,8 +146,8 @@
     this.rtcPeerConnection.addEventListener(
         'datachannel', (e) => this.onDataChannel(e));
     this.dataChannel = this.rtcPeerConnection.createDataChannel('signalling');
-    this.dataChannel.addEventListener(
-        'message', (e) => this.onDataChannelMessage(e));
+    this.handlers.add(
+        new Handler((data) => this.onConfigMessage(data), this.dataChannel));
     window.dc = this.dataChannel;
     this.rtcPeerConnection.addEventListener(
         'icecandidate', (e) => this.onIceCandidate(e));