<!--
Copyright 2011, Google Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

    * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
    * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->

<!--
A simple console for testing WebSocket server.

Type an address into the top text input and click connect to establish
WebSocket. Then, type some message into the bottom text input and click send
to send the message. Received/sent messages and connection state will be shown
on the middle textarea.
-->

<html>
<head>
<title>WebSocket console</title>
<script>
var socket = null;

var showTimeStamp = false;

var addressBox = null;
var protocolsBox = null;
var logBox = null;
var messageBox = null;
var fileBox = null;
var codeBox = null;
var reasonBox = null;

function getTimeStamp() {
  return new Date().getTime();
}

function addToLog(log) {
  if (showTimeStamp) {
    logBox.value += '[' + getTimeStamp() + '] ';
  }
  logBox.value += log + '\n'
  // Large enough to keep showing the latest message.
  logBox.scrollTop = 1000000;
}

function setbinarytype(binaryType) {
  if (!socket) {
    addToLog('Not connected');
    return;
  }

  socket.binaryType = binaryType;
  addToLog('Set binaryType to ' + binaryType);
}

function send() {
  if (!socket) {
    addToLog('Not connected');
    return;
  }

  socket.send(messageBox.value);
  addToLog('> ' + messageBox.value);
  messageBox.value = '';
}

function sendfile() {
  if (!socket) {
    addToLog('Not connected');
    return;
  }

  var files = fileBox.files;

  if (files.length == 0) {
    addToLog('File not selected');
    return;
  }

  socket.send(files[0]);
  addToLog('> Send ' + files[0].name);
}

function parseProtocols(protocolsText) {
  var protocols = protocolsText.split(',');
  for (var i = 0; i < protocols.length; ++i) {
    protocols[i] = protocols[i].trim();
  }

  if (protocols.length == 0) {
    // Don't pass.
    protocols = null;
  } else if (protocols.length == 1) {
    if (protocols[0].length == 0) {
      // Don't pass.
      protocols = null;
    } else {
      // Pass as a string.
      protocols = protocols[0];
    }
  }

  return protocols;
}

function connect() {
  var url = addressBox.value;
  var protocols = parseProtocols(protocolsBox.value);

  if ('WebSocket' in window) {
    if (protocols) {
      socket = new WebSocket(url, protocols);
    } else {
      socket = new WebSocket(url);
    }
  } else {
    return;
  }

  socket.onopen = function () {
    var extraInfo = [];
    if (('protocol' in socket) && socket.protocol) {
      extraInfo.push('protocol = ' + socket.protocol);
    }
    if (('extensions' in socket) && socket.extensions) {
      extraInfo.push('extensions = ' + socket.extensions);
    }

    var logMessage = 'Opened';
    if (extraInfo.length > 0) {
      logMessage += ' (' + extraInfo.join(', ') + ')';
    }
    addToLog(logMessage);
  };
  socket.onmessage = function (event) {
    if (('ArrayBuffer' in window) && (event.data instanceof ArrayBuffer)) {
      addToLog('< Received an ArrayBuffer of ' + event.data.byteLength +
               ' bytes')
    } else if (('Blob' in window) && (event.data instanceof Blob)) {
      addToLog('< Received a Blob of ' + event.data.size + ' bytes')
    } else {
      addToLog('< ' + event.data);
    }
  };
  socket.onerror = function () {
    addToLog('Error');
  };
  socket.onclose = function (event) {
    var logMessage = 'Closed (';
    if ((arguments.length == 1) && ('CloseEvent' in window) &&
        (event instanceof CloseEvent)) {
      logMessage += 'wasClean = ' + event.wasClean;
      // code and reason are present only for
      // draft-ietf-hybi-thewebsocketprotocol-06 and later
      if ('code' in event) {
        logMessage += ', code = ' + event.code;
      }
      if ('reason' in event) {
        logMessage += ', reason = ' + event.reason;
      }
    } else {
      logMessage += 'CloseEvent is not available';
    }
    addToLog(logMessage + ')');
  };

  if (protocols) {
    addToLog('Connect ' + url + ' (protocols = ' + protocols + ')');
  } else {
    addToLog('Connect ' + url);
  }
}

function closeSocket() {
  if (!socket) {
    addToLog('Not connected');
    return;
  }

  if (codeBox.value || reasonBox.value) {
    socket.close(codeBox.value, reasonBox.value);
  } else {
    socket.close();
  }
}

function printState() {
  if (!socket) {
    addToLog('Not connected');
    return;
  }

  addToLog(
      'url = ' + socket.url +
      ', readyState = ' + socket.readyState +
      ', bufferedAmount = ' + socket.bufferedAmount);
}

function init() {
  var scheme = window.location.protocol == 'https:' ? 'wss://' : 'ws://';
  var defaultAddress = scheme + window.location.host + '/echo';

  addressBox = document.getElementById('address');
  protocolsBox = document.getElementById('protocols');
  logBox = document.getElementById('log');
  messageBox = document.getElementById('message');
  fileBox = document.getElementById('file');
  codeBox = document.getElementById('code');
  reasonBox = document.getElementById('reason');

  addressBox.value = defaultAddress;

  if (!('WebSocket' in window)) {
    addToLog('WebSocket is not available');
  }
}
</script>
<style type="text/css">
form {
  margin: 0px;
}

#connect_div, #log_div, #send_div, #sendfile_div, #close_div, #printstate_div {
  padding: 5px;
  margin: 5px;
  border-width: 0px 0px 0px 10px;
  border-style: solid;
  border-color: silver;
}
</style>
</head>
<body onload="init()">

<div>

<div id="connect_div">
  <form action="#" onsubmit="connect(); return false;">
    url <input type="text" id="address" size="40">
    <input type="submit" value="connect">
    <br/>
    protocols <input type="text" id="protocols" size="20">
  </form>
</div>

<div id="log_div">
  <textarea id="log" rows="10" cols="40" readonly></textarea>
  <br/>
  <input type="checkbox"
         name="showtimestamp"
         value="showtimestamp"
         onclick="showTimeStamp = this.checked">Show time stamp
</div>

<div id="send_div">
  <form action="#" onsubmit="send(); return false;">
    data <input type="text" id="message" size="40">
    <input type="submit" value="send">
  </form>
</div>

<div id="sendfile_div">
  <form action="#" onsubmit="sendfile(); return false;">
    <input type="file" id="file" size="40">
    <input type="submit" value="send file">
  </form>

  Set binaryType
  <input type="radio"
         name="binarytype"
         value="blob"
         onclick="setbinarytype('blob')" checked>blob
  <input type="radio"
         name="binarytype"
         value="arraybuffer"
         onclick="setbinarytype('arraybuffer')">arraybuffer
</div>

<div id="close_div">
  <form action="#" onsubmit="closeSocket(); return false;">
    code <input type="text" id="code" size="10">
    reason <input type="text" id="reason" size="20">
    <input type="submit" value="close">
  </form>
</div>

<div id="printstate_div">
  <input type="button" value="print state" onclick="printState();">
</div>

</div>

</body>
</html>
