2013-07-01 7 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

पहले से ही सी # क्लाइंट (केवल बाइट्स देखने के लिए) के साथ परीक्षण किया गया है और यह ठीक हो जाता है। दूसरा बाइट (मास्क) का पहला बिट '0' है, इसलिए यह नहीं कहना चाहिए कि यह मुखौटा है। –

+1

समस्या को खोजने के लिए, आपको इसे तीन मामलों में जांचना होगा। 125 से कम लंबाई के संदेश के साथ, 125 और 65536 के बीच और इससे भी अधिक। इस तरह आप पाते हैं कि आपके कोड का कौन सा हिस्सा काम नहीं कर रहा है। इसके अलावा मैं आपके कोड में कोई समस्या नहीं देख सकता। यह ड्राफ्ट 10 और ड्राफ्ट 17 के साथ संगत लगता है। बस यह सुनिश्चित कर लें कि आपके लॉजिकल ऑपरेटर ऐसा कर रहे हैं जो उन्हें करना है। – Mehran

+0

उस समस्या की इस चर्चा को देखें और देखें कि यह मदद करता है या नहीं। http://code.google.com/p/phpwebsocket/issues/detail?id=55 –

उत्तर

-4

करें कि आप अपने आईआईएस परीक्षण वातावरण में WebSocket प्रोटोकॉल सक्षम कर दिया है।

नियंत्रण कक्ष -> विंडोज विशेषताएं -> IIS -> WS मॉड्यूल

+0

यह जावास्क्रिप्ट में वेबस्केट __server__ को लागू करने के बारे में है, जावास्क्रिप्ट से किसी तक पहुंच नहीं रहा है। इसका आईआईएस या किसी अन्य वेब सर्वर से कोई लेना देना नहीं है। –

1

आप अपने पैकेट के साथ कुछ गलत है देखने के लिए wireshark का उपयोग करना चाहिए! https://github.com/mik3fly-4steri5k/groschat पर एक नज़र डालें, मैं वर्तमान में websockets पर काम कर रहा हूं, और यह पूरी तरह से Google क्रोम पर काम कर रहा है।

संबंधित मुद्दे