मैं क्रोम पैक किए गए ऐप्स में एक वेबस्केट सर्वर का निर्माण कर रहा हूं। मुझे सब कुछ मिल रहा है (हैंडशेक और क्लाइंट से सर्वर पर प्राप्त करना) लेकिन, जब मैं सर्वर से क्लाइंट को संदेश भेजने का प्रयास करता हूं तो यह हमेशा एक त्रुटि प्राप्त करता है: "असफल: किसी सर्वर को क्लाइंट को भेजे गए किसी भी फ्रेम को मुखौटा नहीं करना चाहिए।"वेबस्केट सर्वर
यह मेरा 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' है, इसलिए यह नहीं कहना चाहिए कि यह मुखौटा है। –
समस्या को खोजने के लिए, आपको इसे तीन मामलों में जांचना होगा। 125 से कम लंबाई के संदेश के साथ, 125 और 65536 के बीच और इससे भी अधिक। इस तरह आप पाते हैं कि आपके कोड का कौन सा हिस्सा काम नहीं कर रहा है। इसके अलावा मैं आपके कोड में कोई समस्या नहीं देख सकता। यह ड्राफ्ट 10 और ड्राफ्ट 17 के साथ संगत लगता है। बस यह सुनिश्चित कर लें कि आपके लॉजिकल ऑपरेटर ऐसा कर रहे हैं जो उन्हें करना है। – Mehran
उस समस्या की इस चर्चा को देखें और देखें कि यह मदद करता है या नहीं। http://code.google.com/p/phpwebsocket/issues/detail?id=55 –