diff --git a/modules/websocket_util.py b/modules/websocket_util.py
index a96fe69d32032857a192adaa4d6ce4ea967e779d..7ad84d76fcc33e171cec5ef782c94be45352a7c9 100644
--- a/modules/websocket_util.py
+++ b/modules/websocket_util.py
@@ -4,7 +4,7 @@ from gluon.contrib.websocket_messaging import websocket_send
 from http_util import GET_HOST
 
 def WEBSOCKET_SEND(_room, _type, _data):
-    websocket_send(current.request.env.wsgi_url_scheme + '://' + GET_HOST() + ':8888', _data, '67c371fd204fbcbf9742310d1a9d951bcca1aa86', _room.code)
+    websocket_send(current.request.env.wsgi_url_scheme + '://' + GET_HOST() + ':8888', _type + ":" + _data, '67c371fd204fbcbf9742310d1a9d951bcca1aa86', _room.code)
 
 def GET_URL(_room):
     if current.request.env.wsgi_url_scheme == "https":
diff --git a/views/game/index.html b/views/game/index.html
index 45e22c6a32030f991306bfd32745ca69ccaf7f3c..78175b6720f7969d914e8c150283278ef77d1965 100644
--- a/views/game/index.html
+++ b/views/game/index.html
@@ -24,37 +24,6 @@
     $(document).ready(function(){
         render(name, role, JSON.parse('{{=XML(room_record.roles)}}'));
     });
-
-
-    //Websocket connection
-    $(document).ready(function(){
-
-        if ('WebSocket' in window) {
-            var ws = new WebSocket("{{=GET_URL(room_record)}}");
-            ws.onopen = function () {
-                ws.initialConnect = true;
-            };
-            ws.onmessage = function(e) {
-                set_info(e.data);
-                render(name, role, JSON.parse(e.data));
-            };
-            ws.onerror = function(e) {
-                set_error("{{=T('Error')}}: "+e);
-            };
-            ws.onclose = function () {
-                if(ws.initialConnect) {
-                    window.setTimeout(function() {
-                        set_error("{{=T('WebSocket has closed')}}. {{=T('Please refresh this website')}}.");
-                    }, 1000);
-                } else {
-                    set_error("{{=T('WebSocket server is not responding')}}.");
-                }
-            };
-        } else {
-            /* not supported */
-            set_error("{{=T('WebSocket is not supported by your browser')}}.");
-        }
-
-    });
-
 </script>
+
+{{include 'include/websocket.html'}}
diff --git a/views/include/websocket.html b/views/include/websocket.html
new file mode 100644
index 0000000000000000000000000000000000000000..298eee30f59c2ae60886eb0b01bd40a52c84d153
--- /dev/null
+++ b/views/include/websocket.html
@@ -0,0 +1,48 @@
+<script type="text/javascript">
+    //Websocket connection
+    $(document).ready(function(){
+
+        if ('WebSocket' in window) {
+            var ws = new WebSocket("{{=GET_URL(room_record)}}");
+            ws.onopen = function () {
+                ws.initialConnect = true;
+            };
+            ws.onmessage = function(e) {
+                var firstColon = e.data.indexOf(":");
+                if(firstColon === -1) {
+                    set_error("{{=T('Invalid WebSocket data received')}}: '" + e.data + "'");
+                    return;
+                }
+
+                var type = e.data.substring(0, firstColon);
+                var data = e.data.substring(firstColon + 1);
+
+                switch(type) {
+                    case "roles":
+                        render(name, role, JSON.parse(data));
+                        break;
+                    default:
+                        set_error("{{=T('Invalid WebSocket data received')}}: '" + type + "'");
+                        return;
+                }
+
+            };
+            ws.onerror = function(e) {
+                set_error("{{=T('Error')}}: "+e);
+            };
+            ws.onclose = function () {
+                if(ws.initialConnect) {
+                    window.setTimeout(function() {
+                        set_error("{{=T('WebSocket has closed')}}. {{=T('Please refresh this website')}}.");
+                    }, 1000);
+                } else {
+                    set_error("{{=T('WebSocket server is not responding')}}.");
+                }
+            };
+        } else {
+            /* not supported */
+            set_error("{{=T('WebSocket is not supported by your browser')}}.");
+        }
+
+    });
+</script>