جاوااسکریپت - فایرفاکس متوجه نمیشود که یک متغیر شامل ArrayBuffer است در حالی که کروم این موضوع را درک میکند


من در خواندن یک بلوک توسط فایرفاکس مشکل دارم، یا بهتر بگویم، فهمیدن اینکه یک متغیر شامل یک ArrayBuffer است.

من با WebRTC در تایپاسکریپت آزمایش میکنم.

// Create a data Channel for communication
this.gameChannel = this.RtcConnection.createDataChannel('g', gameDataChannelOptions);
// Start listener
this.gameChannel.onmessage = function (event: any) {
    console.log(event);
}

کد بالا در کروم کار میکند، اما در فایرفاکس خیر، یا بهتر بگویم فایرفاکس نمیتواند دادههای حاصل را بخواند (یا به احتمال زیاد من دارم چیزی را اشتباه انجام میدهم).

در زیر کنسول در کروم و فایرفاکس آمده است، توجه کنید که در کروم دادههای مورد انتظار را میبینم، در حالی که در فایرفاکس فقط یک بلوپ به طول مورد انتظار دریافت میکنم، اما به نظر نمیرسد بتوانم به آن دسترسی پیدا کنم.

چطور میتوانم همان نتیجه را در هر دو مرورگر به دست آورم؟

پاسخ شماره ۱

برای اینکه کار کند، this.gameChannel.binaryType="arraybuffer" را تنظیم کنید.

فایرفاکس درست است، چون "blob" نوع باینری پیشفرض است. خطای خلبان.

کروم هنوز "blob" را پیادهسازی نکرده است، که احتمالاً به همین دلیل است که به صورت پیشفرض به آرایه بافر برمیگردد. اگر من "blob" را در کروم تنظیم کنم، نتیجه میگیرم:

Failed to set the 'binaryType' property on 'RTCDataChannel':
Blob support not implemented yet

متأسفانه، این باعث بروز مشکلات سازگاری وب میشود، همانطور که سؤال شما نشان میدهد.