<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>WebSocket Durability Test</title>
  </head>
  <body>
    <h1>WebSocket Client</h1>
    <p>
      This client will send a message every 500ms, or you can send message
      manually.
    </p>
    <div id="messages"></div>
    <input type="text" id="messageInput" placeholder="Type a message..." />
    <button onclick="sendMessage()">Send Message</button>

    <script>
      const socket = new WebSocket("ws://localhost:8000/ws");

      socket.onopen = function (event) {
        appendMessage("Connection opened");

        setInterval(() => autoSendMessage(), 500)
      };

      socket.onmessage = function (event) {
        appendMessage("Received: " + event.data);
      };

      socket.onclose = function (event) {
        appendMessage("Connection closed");
      };

      function sendMessage() {
        const messageInput = document.getElementById("messageInput");
        const message = messageInput.value;

        if (message.trim() !== "") {
          socket.send(message);
          appendMessage("Sent: " + message);
          messageInput.value = "";
        }
      }

      function autoSendMessage() {
        const message = `[AutoSend] A new message has been sent at ${new Date().toUTCString()}`;
        socket.send(message);
      }

      function appendMessage(message) {
        const messagesDiv = document.getElementById("messages");
        messagesDiv.innerHTML += `<p>${message}</p>`;
      }
    </script>
  </body>
</html>