diff --git a/y2019/vision/server/server.cc b/y2019/vision/server/server.cc
index bbd24fc..e531f51 100644
--- a/y2019/vision/server/server.cc
+++ b/y2019/vision/server/server.cc
@@ -60,8 +60,7 @@
 
 void WebsocketHandler::SendData(const std::string &data) {
   for (seasocks::WebSocket *websocket : connections_) {
-    websocket->send(reinterpret_cast<const uint8_t *>(data.data()),
-                    data.size());
+    websocket->send(data.c_str());
   }
 }
 
diff --git a/y2019/vision/server/www/main.ts b/y2019/vision/server/www/main.ts
index 0d88a43..ed06bc1 100644
--- a/y2019/vision/server/www/main.ts
+++ b/y2019/vision/server/www/main.ts
@@ -29,11 +29,10 @@
 
   initWebSocket(server: string): void {
     const socket = new WebSocket(`ws://${server}/ws`);
-    const reader = new FileReader();
     this.cameraFrames = [];
-    reader.addEventListener('loadend', (e) => {
-      const text = e.srcElement.result;
-      const j = JSON.parse(text);
+
+    socket.addEventListener('message', (event) => {
+      const j = JSON.parse(event.data);
       this.x = j.robotPose.x;
       this.y = j.robotPose.y;
       this.theta = j.robotPose.theta;
@@ -47,9 +46,6 @@
       }
       this.cameraFrames = j.cameraDebug;
     });
-    socket.addEventListener('message', (event) => {
-      reader.readAsText(event.data);
-    });
     socket.addEventListener('close', (event) => {
       setTimeout(() => {
         this.initWebSocket(server);
