<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>WebSocket</title>
  <style>
    section {
      float: left;
      width: 320px;
      padding: 20px;
      margin-right: 10px;
      margin-bottom: 10px;
      border: 1px solid #999999;
    }
  </style>
  <script>
    let databox, socket;
    function initiate() {
      databox = document.getElementById("databox");
      const button = document.getElementById("button");
      button.addEventListener("click", send);
 
      socket = new WebSocket("ws://localhost:12345");
      socket.addEventListener("open", function(event) {
        received("CONNECTION OPEN");
      });
      socket.addEventListener("message", function(event) {
        received(event.data);
      });
      socket.addEventListener("close", function(event) {
        received("CONNECTION CLOSED");
      });
      socket.addEventListener("error", function(event) {
        received("Error: Server does not respond.");
      });
    }
    function received(message) {
      databox.innerHTML += message + "<br>";
    }
    function send() {
      if (socket.readyState !== 1) {
        received("Cannot send: the connection is closed.");
        return;
      }
      const message = document.getElementById("message").value;
      socket.send(message);
    }
    window.addEventListener("DOMContentLoaded", initiate);
  </script>
</head>
<body>
  <section id="formbox">
    <form name="form">
      <label for="message">My Message: </label>
      <input type="text" name="message" id="message" required>
      <button type="button" id="button">Send</button>
    </form>
  </section>
  <section id="databox"></section>
</body>
</html>