2013-07-01 4 views
18

크롬 패키지 앱에 웹 소켓 서버를 구축하고 있습니다. 나는 (서버에서 핸드 셰이크하고 클라이언트로부터받는) 모든 것을 처리했지만 서버에서 클라이언트로 메시지를 보내려고하면 항상 오류가 발생합니다. "실패 : 서버는 클라이언트에 보내는 프레임을 마스크해서는 안됩니다."크롬 패키지 앱의 웹 소켓 서버

이 내 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# 클라이언트로 테스트되었으므로 (바이트 만 보시면됩니다) 괜찮습니다. 두 번째 바이트 (마스크)의 첫 번째 비트는 '0'이므로 마스크가되어서는 안됩니다. –

+1

문제를 찾으려면 세 가지 경우에 테스트해야합니다. 길이가 125보다 작고 125에서 65536 사이의 메시지가 있습니다. 이렇게하면 코드의 어느 부분이 작동하지 않는지 찾을 수 있습니다. 그 외에는 코드 내에서 아무런 문제도 볼 수 없습니다. Draft10 및 Draft17과 호환됩니다. 논리 운영자가해야 할 일을하는지 확인하십시오. – Mehran

+0

해당 문제에 대한이 토론을 확인하고 도움이되는지 확인하십시오. http://code.google.com/p/phpwebsocket/issues/detail?id=55 –

답변

-4

당신이 당신의 IIS 테스트 환경에서 웹 소켓 프로토콜을 사용하도록 설정해야합니다.

제어판 -> 윈도우 기능 -> IIS -> WS 모듈

+0

이것은 JavaScript에서 WebSocket __server__을 구현하는 것이 아니라 JavaScript에서 WebSocket __server__을 구현하는 것입니다. 이것은 IIS 또는 다른 웹 서버와 관련이 없습니다. –

1

당신이 당신의 패킷에 어떤 문제가 있는지보기 위해 와이어 샤크를 사용한다! https://github.com/mik3fly-4steri5k/groschat을 살펴보세요. 현재 웹 소켓에서 작업 중이며 완벽하게 google 크롬을 사용하고 있습니다.