2013-07-01 16 views
18

Buduję serwer sieci Web w chromowanych aplikacjach w pakiecie. Mam wszystko działa (uzgadnianie i odbieranie od klienta do serwera), ale gdy próbuję wysłać wiadomość z serwera do klienta zawsze pojawia się błąd: "nie powiodło się: serwer nie może maskować żadnych ramek, które wysyła do klienta."Serwer sieci Web w chromowanej aplikacji pakowanej

To jest mój kod prepareMessage:

var sendText = _toUTF8Array(JSON.stringify(msg) + '\n'); 
    var aa; 
    var buffer; 
    if (sendText.length > 125) { 
     if (sendText.length < 65536) { 
      aa = new ArrayBuffer(4 + sendText.length); 
      buffer = new Uint8Array(aa); 
      buffer[0] = 129; 
      buffer[1] = 126; 
      buffer[2] = sendText.length >> 8; 
      buffer[3] = sendText.length & 255; 
      _arrayCopy(sendText, 0, buffer, 4, sendText.length); 
     } 
     else { 
      aa = new ArrayBuffer(10 + sendText.length); 
      buffer = new Uint8Array(aa); 
      buffer[0] = 129; 
      buffer[1] = 127; 
      var len = new Uint8Array(8); 
      len = _Uint64ToUint8(sendText.length); 
      var tt = new Uint8Array(8); 
      for (var i = 0; i < 8; i++) 
      { 
       tt[7 - i] = len[i]; 
      } 
      _arrayCopy(tt, 0, buffer, 2, 8); 
      _arrayCopy(sendText, 0, buffer, 10, sendText.length); 
     } 
    } 
    else { 
     aa = new ArrayBuffer(2 + sendText.length); 
     buffer = new Uint8Array(aa); 
     buffer[0] = 129; 
     buffer[1] = sendText.length; 
     _arrayCopy(sendText, 0, buffer, 2, sendText.length); 
    } 
    return aa; 
+0

Przetestowano już z klientem C# (tylko po to, aby zobaczyć bajty) i wszystko idzie dobrze. Pierwszy bit drugiego bajtu (maski) to "0", więc nie powinien mówić, że jest zamaskowany. –

+1

Aby znaleźć problem, należy go przetestować w trzech przypadkach. Z wiadomością o długości mniejszej niż 125, między 125 a 65536 i więcej. W ten sposób możesz znaleźć, która część twojego kodu nie działa. Poza tym nie widzę problemu w twoim kodzie. Wydaje się kompatybilny z Draft10 i Draft17. Tylko upewnij się, że twoi operatorzy logiczni robią to, co powinni. – Mehran

+0

zapoznaj się z omówieniem tego problemu i zobacz, czy to pomaga. http://code.google.com/p/phpwebsocket/issues/detail?id=55 –

Odpowiedz

-4

Upewnij się, że masz włączony protokół websocket w środowisku testowym IIS.

Panel sterowania -> Windows Features -> IIS -> Moduł WS

+0

Chodzi o implementację WebSocket __server__ w JavaScript, bez dostępu do jednego z JavaScript. Nie ma to nic wspólnego z usługami IIS ani żadnym innym serwerem WWW. –

Powiązane problemy