Skip to content
Snippets Groups Projects
index.html 1.32 KiB
Newer Older
<html>
  <h1>Real Time Messaging</h1>
  <pre id="messages" style="height: 400px; overflow: scroll"></pre>
  <input type="text" id="messageBox" placeholder="Type your message here" style="display: block; width: 100%; margin-bottom: 10px; padding: 10px;" />
  <button id="send" title="Send Message!" style="width: 100%; height: 30px;">Send Message</button>
</html>
  (
    function() {
    const sendBtn = document.querySelector('#send');
    const messages = document.querySelector('#messages');
    const messageBox = document.querySelector('#messageBox');

    let ws;

    function showMessage(message) {
      messages.textContent += `\n\n${message}`;
      messages.scrollTop = messages.scrollHeight;
      messageBox.value = '';
    }

    function init() {
      if (ws) {
        ws.onerror = ws.onopen = ws.onclose = null;
        ws.close();
      }

      ws = new WebSocket('ws://localhost:6868');
      ws.onopen = () => {
        console.log('Connection opened!');
      }
      ws.onmessage = ({ data }) => showMessage(data);
      ws.onclose = function() {
        ws = null;
      }
    }

    sendBtn.onclick = function() {
      if (!ws) {
        showMessage("No WebSocket connection :(");
        return ;
      }

      ws.send( messageBox.value);
      showMessage(messageBox.value);
    }

    init();
  })();
</script>