Windows 8 MessageWebSocket http Request Garbage

Ich entwickle eine Windows 8-App, die über node.js / socket.io mit einem node.js-Server kommuniziert, und bin auf eine Reihe von Problemen mit der Verbindung gestoßen. Ich entschied mich für eine TCP-Sniffer-Anwendung (Microsoft Network Monitor 3.4) und bemerkte, dass vor dem Senden der http-Anfrage ein Haufen Müll in meinem String ist:

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.... (Die Punkte sind in den meisten Fällen \ r \ n)

Obwohl ich Port 443 verwende, ist dies kein gesichertes Websocket. Ich muss 443 verwenden, da einige Smartphones nur Websockets erlauben, Socket-Verbindungen an diesem Port herzustellen.

In C ++ erstelle ich das Websocket folgendermaßen:

void Websocket::Connect(Platform::String ^host)
{
  if ( this->socket != nullptr ) return;
  try
  {
    Uri^ address = ref new Uri(host);
    readBuffer = ref new Buffer(1000);
    this->socket = ref new MessageWebSocket();
    this->socket->Control->MessageType = SocketMessageType::Utf8;
    this->socket->Control->MaxMessageSize = 512;
    this->socket->Closed += ref new TypedEventHandler<IWebSocket^, WebSocketClosedEventArgs^>( this, &Websocket::ServerClosed );
    this->socket->MessageReceived += ref new TypedEventHandler<MessageWebSocket^, MessageWebSocketMessageReceivedEventArgs^>( this, &Websocket::MessageRecv );
    create_task(this->socket->ConnectAsync(address)).then([this](task<void> previousTask)
    {
      try
      {
        concurrency::task_status status = previousTask.wait();
        switch( status ) {
        case concurrency::task_status::completed:
          this->connected = true;
          break;
        default:
          socketErrorString = ref new Platform::String( L"Connection was cancelled" );
        }
      }
      catch(Exception^ exception)
      {
        this->connected = false;
        socketErrorString = ref new Platform::String( exception->Message->Data() );
        this->socket = nullptr;
      } catch( ... ) {
        this->connected = false;
        socketErrorString = ref new Platform::String( L"Unknown exception caught (inside connect)" );
        this->socket = nullptr;
      }
    });
  } catch( Exception ^exc ) {
    this->connected = false;
    socketErrorString = exc->Message; //ref new Platform::String( L"Unknown exception caught (outside connect)" );
    this->socket = nullptr;
  }
}

Ich kann keine Art von Problem im Code sehen, also habe ich gehofft, dass ein paar andere Augen es können. Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage