title: Who is sending http websocket upgrade requests?
body: <p>Websocket? Or XMLHttpRequest? Or I have to do it myself?</p>
  
  <p>So I understand the client has to send it, but when and why? Suppose I use the XMLHttpRequest object to send a normal HTTP GET. 
  I have no control over how long that internal tcp connection in the browser lasts, right?
  And if I want to use websockets I have to use their own websocket classes anyway, so for me as a user, "upgrading" is not visible, is it? 
  It's just the browser that is doing some internal magic to reuse a connection, the whole upgrade process is irrelevant for me as a user? I still have to use two different classes, I just happen to use the same port and the browser then decides for performance reasons to upgrade.
  Is that really correct?</p>