text: // Sending messages, a simple POST
  function PublishForm(form, url) {
  
    function sendMessage(message) {
      fetch(url, {
        method: 'POST',
        body: message
      });
    }
  
    form.onsubmit = function() {
      let message = form.message.value;
      if (message) {
        form.message.value = '';
        sendMessage(message);
      }
      return false;
    };
  }
  
  // Receiving messages with long polling
  function SubscribePane(elem, url) {
  
    function showMessage(message) {
      let messageElem = document.createElement('div');
      messageElem.append(message);
      elem.append(messageElem);
    }
  
    async function subscribe() {
      let response = await fetch(url);
  
      if (response.status == 502) {
        // Connection timeout
        // happens when the connection was pending for too long
        // let's reconnect
        await subscribe();
      } else if (response.status != 200) {
        // Show Error
        showMessage(response.statusText);
        // Reconnect in one second
        await new Promise(resolve => setTimeout(resolve, 1000));
        await subscribe();
      } else {
        // Got message
        let message = await response.text();
        showMessage(message);
        await subscribe();
      }
    }
  
    subscribe();
  
  }
  