<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": roles = JSON.parse(atob(data)); break; case "role": role_definition = JSON.parse(atob(data)); if(playerid in role_definition) { role = role_definition[playerid]["role"]; prompts = role_definition[playerid]["prompts"]; currentPrompt = 0; } break; default: set_error("{{=T('Invalid WebSocket data received')}}: '" + type + "'"); return; } render(role, roles); }; 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>