title: API Model for Server Push Technologies (COMET)
body: <p>I'm whiling to add a support of Server Side events to <a href="http://cppcms.sourceforge.net/" rel="nofollow noreferrer">CppCMS</a>. I understand the technical part of what to do on the
  level of communication: Client sends long polling XmlHTTPRequest, and waits for respond,
  server accepts the connection and does not respond until server side event occurs and sends
  the response to the client. The client repeats the procedure.</p>
  
  <p>However, this is too "low" level for most of web developers. There are many questions: how do I manage events, how do I manage connections and so on.</p>
  
  <p>I thought about two possible models:</p>
  
  <ol>
  <li><p>There are some named events defined and the server side,
  for example "New Message in Chat Room no 134";
  when the request accepted the server side application checks the messages
  in the room  (for example in DB) and if there is no new messages for the client
  it subscribes to event and waits on it.</p>
  
  <p>When some other client posts data to the server, it notifies all applications on
  the "New Message in Chat Room no 134" event and they wake up and send these messages
  to clients, and so on.</p>
  
  <p>This model is still looks like quite "low level" model, but it hides all
  notification methods.</p></li>
  <li><p>Another option is to define some named queues, so each client creates such
  queue upon connection to server and waits for new messages. When some client
  posts a new message to "Chat Room no 134", on the server side it is broadcasted
  to all queues connected to this "Chat Room no 134", and the message is delivered
  to client.</p>
  
  <p>However there are many questions that are risen:</p>
  
  <ul>
  <li>How do I manage queues and the session level, at the level of single page?</li>
  <li>How do I delete queues and create timeouts on them?</li>
  <li>What happens if more then one "window" subscribes to same queue?</li>
  </ul></li>
  <li><p>Create a persistent object on server side that glues between server side events
  and user side events. It may communicate over distinct XHR requests that are
  redirected to it.</p>
  
  <p>So client (JavaScript) registers events and waits for them with XHR
  and server side dispatched event notifications, until the page is rebuild.</p></li>
  </ol>
  
  <p>So, I would like to know, what are most popular and recommended 
  API models behind server side push technologies?</p>
  
  <p>Thanks</p>
  
  <p><strong>Edit</strong>: Added third option</p>