2013-07-01 12 views
18

クロムパッケージのアプリケーションにWebSocketサーバーを構築しています。 私はすべての作業(ハンドシェイクとクライアントからサーバーへの受信)を取得しましたが、サーバーからクライアントへメッセージを送信しようとすると、常にエラーが発生します。「失敗:サーバーはクライアントに送信するフレームをマスクしないでください。クロムパッケージのWebSocketサーバー

これは私の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

既にC#クライアントでテストされています(バイトを見るだけです)。 2番目のバイト(マスク)の最初のビットは '0'なので、マスクされているとは限りません。 –

+1

問題を見つけるには、3つのケースでテストする必要があります。 125未満のメッセージ、125〜65536のメッセージ、それ以上のメッセージ。そうすれば、コードのどの部分が機能していないのかを見つけることができます。それ以外はあなたのコード内で問題は見られません。 Draft10とDraft17と互換性があるようです。あなたの論理演算子がやるべきことをしていることを確認してください。 – Mehran

+0

この問題に関するこのディスカッションをチェックし、役立つかどうかを確認してください。 http://code.google.com/p/phpwebsocket/issues/detail?id=55 –

答えて

-4

はあなたのIISのテスト環境でのWebSocketプロトコルを有効にしていることを確認してください。

[コントロールパネル] - > [Windowsの機能 - > IIS - > WSモジュール

+0

これはJavaScriptでWebSocket __server__を実装しており、JavaScriptからアクセスしていません。これは、IISやその他のWebサーバーとは関係ありません。 –

1

あなたのパケットと間違っているかを確認するのwiresharkを使用する必要があります! https://github.com/mik3fly-4steri5k/groschatを見てください。私は現在websocketsで作業しています。それはgoogle chromeで動作します。

関連する問題