title: Windows 8 MessageWebSocket http request garbage
body: <p>I'm developing a Windows 8 app that communicates with a node.js server using node.js/socket.io, and have ran into a pile of issues with connecting.  I decided to run a tcp sniffer application (microsoft network monitor 3.4), and noticed that before sending the http request, there is a bunch of garbage in my string:</p>
  
  <p><code>C8 D7 19 87 09 1C C8 60 00 13 8C FA 08 00 45 00 00 C3 37 78 40 00 80 06 00 00 C0 A8 01 71 17 17 5C 67 C2 4F 01 BB 06 1A 36 71 A2 8B 48 C7 50 18 04 00 36 4D 00 00 47 45 54 20 2F 20 48 54 54 50 2F 31 2E 31 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 74 2D 4B 65 79 3A 20 76 46 46 30 4F 4C 2F 55 63 53 49 6E 6F 70 46 67 52 69 6F 52 73 77 3D 3D 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 55 70 67 72 61 64 65 0D 0A 55 70 67 72 61 64 65 3A 20 57 65 62 73 6F 63 6B 65 74 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 74 2D 56 65 72 73 69 6F 6E 3A 20 31 33 0D 0A 48 6F 73 74 3A 20 32 33 2E 32 33 2E 39 32 2E 31 30 33 3A 34 34 33 0D 0A 0D 0A 
  È×.‡..È`..Œú..E..Ã7x@.€...À¨.q..\gÂO.»..6q¢‹HÇP...6M..GET / HTTP/1.1..Sec-WebSocket-Key: vFF0OL/UcSInopFgRioRsw==..Connection: Upgrade..Upgrade: Websocket..Sec-WebSocket-Version: 13..Host: 192.168.1.1:443....</code> (the dots are \r\n in most cases)</p>
  
  <p>Although I am using port 443, this is not a secured websocket - I am forced to use 443 because some smart phones only allow websockets to create socket connections on that port.</p>
  
  <p>In C++, I am creating the websocket like so:</p>
  
  <pre><code>void Websocket::Connect(Platform::String ^host)
  {
    if ( this-&gt;socket != nullptr ) return;
    try
    {
      Uri^ address = ref new Uri(host);
      readBuffer = ref new Buffer(1000);
      this-&gt;socket = ref new MessageWebSocket();
      this-&gt;socket-&gt;Control-&gt;MessageType = SocketMessageType::Utf8;
      this-&gt;socket-&gt;Control-&gt;MaxMessageSize = 512;
      this-&gt;socket-&gt;Closed += ref new TypedEventHandler&lt;IWebSocket^, WebSocketClosedEventArgs^&gt;( this, &amp;Websocket::ServerClosed );
      this-&gt;socket-&gt;MessageReceived += ref new TypedEventHandler&lt;MessageWebSocket^, MessageWebSocketMessageReceivedEventArgs^&gt;( this, &amp;Websocket::MessageRecv );
      create_task(this-&gt;socket-&gt;ConnectAsync(address)).then([this](task&lt;void&gt; previousTask)
      {
        try
        {
          concurrency::task_status status = previousTask.wait();
          switch( status ) {
          case concurrency::task_status::completed:
            this-&gt;connected = true;
            break;
          default:
            socketErrorString = ref new Platform::String( L"Connection was cancelled" );
          }
        }
        catch(Exception^ exception)
        {
          this-&gt;connected = false;
          socketErrorString = ref new Platform::String( exception-&gt;Message-&gt;Data() );
          this-&gt;socket = nullptr;
        } catch( ... ) {
          this-&gt;connected = false;
          socketErrorString = ref new Platform::String( L"Unknown exception caught (inside connect)" );
          this-&gt;socket = nullptr;
        }
      });
    } catch( Exception ^exc ) {
      this-&gt;connected = false;
      socketErrorString = exc-&gt;Message; //ref new Platform::String( L"Unknown exception caught (outside connect)" );
      this-&gt;socket = nullptr;
    }
  }
  </code></pre>
  
  <p>I can't see any sort of issue in the code, so I was hoping a few other sets of eyes may be able to.  Thanks.</p>