diff --git a/js/.DS_Store b/js/.DS_Store
index 3aa25a9..80e2e80 100644
--- a/js/.DS_Store
+++ b/js/.DS_Store
Binary files differ
diff --git a/js/WebSocketTransport.js b/js/WebSocketTransport.js
index 49c09a4..83f53d9 100644
--- a/js/WebSocketTransport.js
+++ b/js/WebSocketTransport.js
@@ -161,7 +161,6 @@
 		bytes.set(hex);
 		
 		self.ws.send(bytes.buffer);
-		console.log('ws.onopen: ws.send() returned.');
 	}
 	
 	this.ws.onerror = function(ev) {
@@ -236,6 +235,13 @@
 		interest.scope = 1;
 		//var hex = encodeToHexInterest(int);
 		var binaryInterest = encodeToBinaryInterest(interest);
+		// If we directly use binaryInterest.buffer to feed ws.send(), 
+		// WebSocket will end up sending a packet with 10000 bytes of data.
+		// That is, WebSocket will flush the entire buffer in BinaryXMLEncoder
+		// regardless of the offset of the Uint8Array. So we have to create
+		// a new Uint8Array buffer with just the right size and copy the 
+		// content from binaryInterest to the new buffer.
+		//    ---Wentao
     	var bytearray = new Uint8Array(binaryInterest.length);
 		bytearray.set(binaryInterest);
 		console.log('Send Interest registration packet.');
@@ -244,7 +250,6 @@
 		CSTable.push(csEntry);
     	
     	this.ws.send(bytearray.buffer);
-		console.log('ws.send() returned.');
 		
 		return 0;
 	} else {
diff --git a/js/testing/.DS_Store b/js/testing/.DS_Store
index c13445d..3f0e7ef 100644
--- a/js/testing/.DS_Store
+++ b/js/testing/.DS_Store
Binary files differ
diff --git a/js/testing/test-put-async.html b/js/testing/test-put-async.html
index 315dec8..cece056 100644
--- a/js/testing/test-put-async.html
+++ b/js/testing/test-put-async.html
@@ -23,11 +23,6 @@
 			if (kind == Closure.UPCALL_FINAL) {
 				// Do nothing.
 			} else if (kind == Closure.UPCALL_INTEREST) {
-				// Extract the Name from the Interest. var name = upcallInfo.Interest.name;;
-				// Check that we want to respond to upcallInfo.interest. If yes, construct a ContentObject
-				// response, put it to the NDN and return Closure.RESULT_INTEREST_CONSUMED. Else fall 
-				// through to return Content.RESULT_OK.
-				// See linemaker.py for more details.
 				console.log('AsyncPutClosure.upcall() called.');
 				var content = document.getElementById('content').value;
 				var interest = upcallInfo.interest;
@@ -40,17 +35,21 @@
 				
 				var co = new ContentObject(new Name(nameStr), si, answer, new Signature()); 
 				co.sign();
-				var hex = encodeToHexContentObject(co);
+				var coBinary = encodeToBinaryContentObject(co);
+				// If we directly use coBinary.buffer to feed ws.send(), WebSocket 
+				// will end up sending a packet with 10000 bytes of data. That 
+				// is, WebSocket will flush the entire buffer in BinaryXMLEncoder
+				// regardless of the offset of the Uint8Array. So we have to
+				// create a new Uint8Array buffer with just the right size and
+				// copy the content from coBinary to the new buffer.
+				//    ---Wentao
+				var bytearray = new Uint8Array(coBinary.length);
+				bytearray.set(coBinary);
 				
-				var bytearray = new Uint8Array(hex.length / 2);
-	    		for (var i = 0; i < hex.length; i = i + 2) {
-	        		bytearray[i / 2] = '0x' + hex.substr(i, 2);
-	    		}
-	    		
-	    		upcallInfo.ndn.transport.ws.send(bytearray.buffer);
-	    		console.log('ws.send() finised.');
-	    		
-	    		return Closure.RESULT_INTEREST_CONSUMED;
+				upcallInfo.ndn.transport.ws.send(bytearray.buffer);
+				console.log('ws.send() finised.');
+				
+				return Closure.RESULT_INTEREST_CONSUMED;
 			}
 			return Closure.RESULT_OK;
 		};
