WebAssembly में माइग्रेशन की गाइड

(P)NaCl के बंद होने के बारे में सूचनाएं

अलग-अलग ब्राउज़र के लिए WebAssembly पर मिल रही मदद को ध्यान में रखते हुए, हमने आने वाले समय में WebAssembly पर नेटिव कोड की कोशिश की जाएगी. साथ ही, हम आने वाले समय में साल 2019 की चौथी तिमाही में PNaCl (Chrome ऐप्लिकेशन को छोड़कर). हमारा मानना है कि हमारे WebAssembly का नेटवर्क इसे नए और मौजूदा उच्च-प्रदर्शन के लिए बेहतर रूप से फ़िट कर देता है और PNaCl का इस्तेमाल काफ़ी कम है. इसलिए, इनके इस्तेमाल को रोकने की ज़रूरत नहीं है.

Chrome 76 के बाद, ओपन वेब पर PNaCl ऑरिजिन ट्रायल, यह वेब डेवलपर के लिए, रजिस्टर करने और ऐसी सुविधा का ऐक्सेस पाने का एक तरीका है जो डिफ़ॉल्ट रूप से चालू नहीं होती. आम तौर पर, यह एक नई सुविधा है, लेकिन इस मामले में इसे बंद कर दिया गया है. डेवलपर, Origin Trial Console पर रजिस्टर करके एक टोकन पा सकता है. इस टोकन को पेज में जोड़ा जा सकता है. इससे, उपयोगकर्ता को फ़्लैग का इस्तेमाल किए बिना ही यह सुविधा चालू हो जाएगी. (ज़्यादा जानकारी के लिए, लिंक की गई गाइड देखें). मुफ़्त में आज़माने की सुविधा को Chrome 78 तक के लिए शेड्यूल किया गया है. यह करीब-करीब दिसंबर 2019 तक चलेगा. इस बदलाव का मकसद, Chrome के ऐप्लिकेशन या एक्सटेंशन में NaCl या PNaCl पर कोई असर नहीं डालना है. साथ ही, इसका मकसद “enable-nacl” में बदलाव करना नहीं है जांच के लिए PNaCl को स्थानीय रूप से चालू करने के लिए chrome://flags में फ़्लैग का भी इस्तेमाल किया जा सकता है (यह फ़्लैग किसी भी पेज पर, गैर-PNaCl "नेटिव" NaCl को चालू करने के अपने मौजूदा फ़ंक्शन को भी बनाए रखता है).

हमने हाल ही में, साल 2018 की पहली तिमाही में इसका समर्थन रोकने की घोषणा भी की थी Chrome के ऐप्लिकेशन से बाहर नहीं है.

टूलचेन माइग्रेशन

(P)NaCl के ज़्यादातर इस्तेमाल के लिए हम ट्रांज़िशन की सलाह देते हैं को NaCl SDK से Emscripten पर ले जाने में मदद करता है. माइग्रेट करने की प्रक्रिया काफ़ी आसान है अगर आपका ऐप्लिकेशन Linux पर पोर्टेबल है, तो SDL या POSIX API. NaCl / Pepper API के लिए सीधे तौर पर सहायता उपलब्ध नहीं है. हालांकि, हमने वेब एपीआई के बराबर के एपीआई की सूची बनाने की कोशिश की है. पोर्ट करने के ज़्यादा चुनौती वाले मामलों के लिए, कृपया यहां संपर्क करें native-client-discuss@googlegroups.com

एपीआई माइग्रेशन

हमने यहां (P)NaCl के साथ काम करने वाले हर एपीआई के लिए, वेब प्लैटफ़ॉर्म के विकल्पों की स्थिति के बारे में बताया है. इसके अलावा, टेबल में लाइब्रेरी या विकल्प को Emscripten पर दिखाया जाता है जो मिलते-जुलते विकल्प उपलब्ध कराता हो.

हमें उम्मीद है कि साल 2017 में, WebAssembly में शेयर किए गए मेमोरी थ्रेड की सुविधा मिलेगी. क्योंकि (P)NaCl के सबसे दिलचस्प इस्तेमाल से मेल खाने के लिए थ्रेड बहुत ज़रूरी होते हैं मामले. माइग्रेशन के ऐसे आइटम जिन्हें लगता है कि आने वाले समय में थ्रेड की सुविधा काम करेगी, उन्हें यहां मार्क किया गया है. अगर आपके ऐप्लिकेशन का फ़्लो कंट्रोल, ब्लॉकिंग एपीआई पर काफ़ी निर्भर करता है, तो हो सकता है कि आसानी से पोर्ट करने के लिए, थ्रेड की सुविधा की ज़रूरत पड़े.

हमने इस टेबल में सही जानकारी देने की कोशिश की है, लेकिन इसमें कोई शक नहीं है. अगर आपको कोई समस्या आती है, तो कृपया हमसे इस पर संपर्क करें: native-client-discuss@googlegroups.com

PPAPI

PPB_Audio

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं x एसडीएल (आंशिक) GAP (आंशिक) - AudioWorkletNode ROUGHLY के बराबर AudioWorkletSpec तैयार है, लेकिन हो सकता है कि इस एपीआई के लिए AudioDeviceClient बेहतर हो. AudioDeviceClient को अब भी कम्यूनिटी तय कर रही है. यह ज़रूरी नहीं है कि वर्कलेट इस एपीआई के लिए करीब से मिलता-जुलता हो.
GetCurrentConfig SDL ऑडियो कॉन्टेक्स्ट.* (पास की गई सेटिंग वापस पाता है)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetTimestamp SDL AudioBufferSourceNode.start (पैरामीटर) बफ़र से जुड़ने के बजाय, हर बार पास किया जाता है.
SetTimestamp SDL AudioBufferSourceNode.start (पैरामीटर)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP - WebAudio केवल 32-बिट फ़्लोट का उपयोग करता है, PPAPI 16-बिट इंटेंट करता है. PPAPI सैद्धांतिक तौर पर, सैंपलिंग के कई साइज़ के साथ काम करता है. असल में, यह सिर्फ़ 16-बिट सैंपल के साथ काम करता है. माफ़ करें, डेवलपर ने मेमोरी के इस्तेमाल में बचत करने के लिए, 16-बिट सैंपल साइज़ का अनुरोध किया है. वेब ऑडियो की खास बातों का अगला वर्शन, 16-बिट सैंपल के साथ काम करेगा. Firefox की तरह ही, AudioBuffer को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, decodeAudioData से मिलने वाले ऑडियो के लिए 16-बिट बफ़र का इस्तेमाल करें
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
CreateStereo16बिट GAP GAP - केवल 32-बिट फ़्लोट नमूने समर्थित हैं वेब ऑडियो स्पेसिफ़िकेशन के अगले वर्शन में, 16-बिट सैंपल के लिए सहायता लागू की जाएगी.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (डिफ़ॉल्ट कंस्ट्रक्शन से) AudioContext में, डिफ़ॉल्ट रूप से हार्डवेयर ऑडियो डिवाइस के असल सैंपल रेट से मेल खाने वाला सैंपल रेट सेट होगा.
RecommendSampleFrameCount GAP GAP - को पहले से तय AudioDeviceClient के साथ हैंडल किया जाएगा उपयोगकर्ता के तय किए गए साइज़ की अनुमति देने से जुड़ी समस्या अब भी हल नहीं हुई है. हालांकि, इस पर काम जारी है. शायद यह AudioDeviceClient के साथ सबसे अच्छी तरह से मैनेज किया जाता है, जिससे आपको यह पता चल सकता है कि दिए गए हार्डवेयर के लिए सही साइज़ क्या होगा.

PPB_Console

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
लॉग utime console.log/warn/error/...
LogWithSource GAP GAP Console API को LogWithSource की जगह पूरी तरह से इस्तेमाल किया जा सकता है. हालांकि, अगर डेवलपर ने LogWithSource की सुविधा के लिए इस्तेमाल के खास उदाहरण दिए हैं, तो Console API का इस्तेमाल नहीं किया जा सकता. DevTools के सोर्स मैप का इस्तेमाल, ट्रांसपाइल किए गए JavaScript को उसकी मूल सोर्स भाषा में डीबग करने के लिए किया जा सकता है.

PPB_Core

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
getTime utime नई तारीख().getTime()
getTimeTicks यूटाइम new Date().getTime()
IsMainThread GAP window.document !== undefined
CallOnMainThread GAP Worker.postMessage + Atomics.wait मिलते-जुलते सिंक बनाए जा सकते हैं.

PPB_FileIO

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं एफ़एस (कुछ हिस्से के लिए) window.chooseFileSystemEntries() बनाएं और खोलें का इस्तेमाल अलग-अलग तरीके से किया जाता है, लेकिन दोनों ही टाइल की ताकत एक जैसी होती है.
खोलें एफ़एस (कुछ हिस्से के लिए) window.chooseFileSystemEntries()
क्वेरी एफ़एस (कुछ हिस्से के लिए) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last फ़ायदेमंद GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता.
छूकर एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile("name", {create: true})
पढ़ें FS (आंशिक) Blob.slice().arrayBuffer()
लिखें एफ़एस (कुछ हिस्से के लिए) FileSystemWriter.write()
SetLength एफ़एस (कुछ हिस्से के लिए) FileSystemWriter.truncate()
फ़्लश GAP (आंशिक) GAP (कुछ हद तक) - FileSystemWrite.close() को कॉल करने पर, फ़ाइलें फ़्लश हो जाती हैं इसे डिज़ाइन करने के मकसद से बनाया गया है, क्योंकि Native File System API फ़ाइलें, ओएस के संपर्क में आती हैं. इसलिए, ओएस में डेटा दिखाए जाने से पहले, सुरक्षित ब्राउज़िंग की जांच करनी होगी.
बंद करें FS (आंशिक) FileSystemWriter.close() लंबित ऑपरेशन रद्द नहीं करता, लेकिन डिस्क पर अब तक लिखा गया कोई भी डेटा फ़्लश करता है.
ReadToArray GAP Blob.slice().arrayBuffer() या Blob.arrayBuffer() साथ-साथ एक से ज़्यादा सबरेंज को पढ़ने की अनुमति देता है.

PPB_FileRef

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile("name", {create: true})
GetFileSystemType FS (आंशिक) FileSystem.type
GetName एफ़एस (कुछ हिस्से के लिए) File.name
GetPath FS (आंशिक) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है किसी फ़ाइल का ऐब्सलूट पाथ तय नहीं किया जा सकता. साथ ही, उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल मौजूद है.
GetParent एफ़एस (कुछ हिस्से के लिए) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल है.
MakeDirectory एफ़एस (कुछ हिस्से के लिए) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
छूकर एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile("name", {create: true}) बदलाव करने के लिए, लिखकर भी समय तय किया जा सकता है.
मिटाएं FS (आंशिक) FileSystemDirectoryHandle.removeEntry() PPAPI के उलट, डायरेक्ट्री का खाली होना ज़रूरी नहीं है.
नाम बदलें FS (आंशिक) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल को नए नाम से लिखा जा सकता है. इसके लिए, नए नाम के लिए FileSystemFileHandle.getFile() और पुरानी फ़ाइल के कॉन्टेंट के लिए FileSystemFileHandle.createWriter().write() का इस्तेमाल करें. इसके बाद, पुरानी फ़ाइल मिटाने के लिए FileSystemDirectoryHandle.removeEntry() का इस्तेमाल करें. ऐसा कोई डायरेक्ट एपीआई नहीं है जो Native File System API में एक ही चरण में यह काम करेगा.
क्वेरी GAP (आंशिक) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता.
ReadDirectoryEntries एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं FS (आंशिक) window.requestFileSystem JS API, दोनों काम एक ही चरण में करता है
खोलें GAP window.requestFileSystem JS API एक चरण में दोनों काम करता है
GetType GAP FileSystem.type

PPB_Fullscreen

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
नमूना SDL गेमपैड.* Gamepad ऑब्जेक्ट, navigationStart के हिसाब से टाइमस्टैंप दिखाता है. हार्डवेयर से डेटा मिलने के बाद, इसे अपडेट कर दिया जाता है https://www.w3.org/TR/gamepad/#gamepad-interface

PPB_Graphics2D

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL Canvas.getContext('2d')
बताएं SDL Canvas.clientwidth + Canvas.clientHight
PaintImageData SDL CanvasRenderingContext2D.putImageData
स्क्रोल करें GAP CanvasrenderContext2D.scrollIntoView, CanvasrenderContext2D.drawImage GAP (कुछ हद तक) - इसे लागू करने के लिए, drawImage का इस्तेमाल करके कैनवस को खुद पर ऑफ़सेट के साथ ड्रॉ करें. इसके बाद, बाकी हिस्से को भरें.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
फ़्लश GAP इससे मिलता-जुलता कोई सीधा नहीं GAP (आंशिक) - ड्रॉ कोड के आखिर में हमेशा इंप्लिसिट फ़्लश होता है; इसकी संभावना नहीं है को बदलने के लिए. हालांकि, OffscreenCanvas और ImageBitmapRenderingContext इससे मिलती-जुलती सुविधाएं मिलती हैं.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (आंशिक) - WebGL 2.0 और OpenGL ES 3.0 के Emscripten के एक्सपोज़र, उपयोगकर्ता-तय किए गए मल्टीसैंपल किए गए फ़्रेमबफ़र के साथ काम करते हैं. इनमें PPAPI के ज़रिए कॉन्फ़िगर किए जा सकने वाले सभी पैरामीटर सेट किए जा सकते हैं.
बनाएं SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP इससे मिलता-जुलता कोई सीधा नहीं GAP (कुछ हद तक) - ड्रॉ कोड के आखिर में हमेशा एक फ़्लश होता है. ऐसा होने की संभावना कम है कि यह बदले. हालांकि, OffscreenCanvas और ImageBitmapRenderingContext का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है.

PPB_ImageData

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetNativeImageDataFormat SDL ImageData के लिए RGBA क्रम ज़रूरी है
IsImageDataFormatSupported SDL ImageData के लिए RGBA क्रम ज़रूरी है
बनाएं SDL CanvasRenderingContext2d.createImageData
जानकारी SDL ImageData में कभी भी पैरों के बीच की दूरी नहीं होती
मैप SDL ImageData.data
अनमैप करना SDL ImageData.data

PPB_InputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
RequestInputEvents SDL इससे मिलता-जुलता कोई सीधा नहीं इस सुविधा के न होने से शायद कोई फ़र्क़ न पड़े, क्योंकि JS / Wasm मुख्य थ्रेड पर चलता है और क्रॉस प्रोसेस राउंड-ट्रिप के बिना इवेंट को आसानी से फ़िल्टर किया जा सकता है.
RequestFilteringInputEvents SDL माउस* की* व्हील* टच* कंपोज़िशन* इवेंट
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL इवेंट क्लास डिसेंडेंट
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL 'dblclick' बनाम 'mousedown' इवेंट
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (इस बारे में खुद पता लगाने के लिए)

PPB_IMEInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं इस डेटा को CompositionEvent.data से वापस पाया जा सकता है.
GetSegmentOffset GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetTargetSegment GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं
GetSelection GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_Instance

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
BindGraphics SDL Canvas.getContext (बांडिंग अपने-आप होने की वजह से, यह ज़रूरी नहीं है).
IsFullFrame GAP GAP - MIME टाइप हैंडलर के बराबर कोई नहीं. NaCl ऐप्लिकेशन, किसी खास MIME टाइप को मैनेज करने और पूरे दस्तावेज़ का मालिकाना हक रखने के लिए रजिस्टर किए जा सकते हैं.
DidCreate 'लागू नहीं' के तौर पर जवाब देना <Element>[key] सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है
DidDestroy 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना NaCl के लिए ट्रिगर नहीं किया गया
DidChangeView 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'resize' इवेंट
DidChangeFocus 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट
HandleDocumentLoad 'लागू नहीं' के तौर पर जवाब देना GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है कुछ खास तरह के MIME टाइप को मैनेज करने के लिए, ऐप्लिकेशन के ज़रिए NaCl मॉड्यूल + मेनिफ़ेस्ट एंट्री सेट अप की जा सकती है.

PPB_MediaStreamAudioTrack

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
कॉन्फ़िगर करें GAP getUserMedia() getUserMedia() की पाबंदियों से, MediaStreamTrack में इस्तेमाल करने के लिए कॉन्फ़िगरेशन वैल्यू मिल सकती हैं.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP - कोई मिलता-जुलता नहीं
RecycleBuffer GAP GAP - कोई मिलता-जुलता नहीं
बंद करें GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP कैनवस कैप्चर कैनवस कैप्चर की मदद से, प्रोग्राम के हिसाब से वीडियो फ़्रेम जोड़े जा सकते हैं.
कॉन्फ़िगर करें GAP applyConstraints(), getUserMedia() GAP (आंशिक) - वेब API में उपलब्ध कॉन्फ़िगरेशन की सीमा PPAPI से अलग हो सकती है.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP - PP_MEDIASTREAMVIDEOSTREAM_ATTRIB_BUFFERED_FRAMES के बराबर नहीं MediaStream को पहले से लोड नहीं किया जा सकता. इसलिए, यह कभी भी बफ़र नहीं होगा: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP - PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT के बराबर कोई एट्रिब्यूट नहीं है
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - कोई समतुल्य नहीं
RecycleFrame GAP GAP - कोई मिलता-जुलता नहीं
बंद करें GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - कोई समतुल्य नहीं
PutFrame GAP GAP - कोई समतुल्य नहीं

PPB_MessageLoop

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है.
GetForMainThread 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
GetCurrent 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
AttachToCurrentThread 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
चलाएं 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है.
PostWork 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
PostQuit 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.

PPB_Messaging

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
PostMessage 'लागू नहीं' के तौर पर जवाब देना Window.postMessage
RegisterMessageHandler 'लागू नहीं' के तौर पर जवाब देना Window.addEventListener
UnregisterMessageHandler 'लागू नहीं' के तौर पर जवाब देना Window.removeEventListener

PPB_MouseCursor

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
SetCursor SDL Element.style.cursor स्टॉक कर्सर का एक ही सेट इस्तेमाल किया जा सकता है. कस्टम कर्सर, url(..) का इस्तेमाल करके बनाए जा सकते हैं. डाइनैमिक कस्टम कर्सर, डेटा यूआरआई का इस्तेमाल करके बनाए जा सकते हैं. CSS3, हॉटस्पॉट तय करने की सुविधा देता है.

PPB_MouseLock

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
कई तरीके OpenGLES काम करने के लिए, WebGL 1.0 के करीब हो.
x OffscreenCanvas

PPB_TextInputController

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
SetTextInputType GAP GAP - इनपुट के तरीके का संपादक एपीआई से भरा जा सकता है कुछ डेवलपर या तो इस तरीके से संकेत देना चाहते हैं या किसी कैनवस के अंदर इनलाइन इवेंट / आउटपुट इनलाइन को रोकने और दिखाने की सुविधा को प्राथमिकता देते हैं.
UpdateCaretPosition GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/

PPB_URLLoader

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind new XMLHttpRequest();
खोलें embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP - कोई XMLHTTPRequest समान नहीं
GetUploadProgress embind XMLHttpRequest 'प्रोग्रेस' इवेंट
GAP FetchObserver अभी तक इसके लिए कोई खास जानकारी नहीं दी गई है या इसे लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind XMLHttpRequest 'प्रोग्रेस' इवेंट
GAP FetchObserver अभी तक तय या लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind जवाब फ़ेच करें.*
ReadResponseBody embind XMLHttpRequest.response
embind मुख्य हिस्सा.* (रिस्पॉन्स एक मुख्य हिस्सा होता है)
FinishStreamingToFile embind GAP - कोई प्रत्यक्ष समतुल्य नहीं XMLHttpRequest और 'फ़ेच करें', दोनों ही सीधे तौर पर स्टोरेज में स्ट्रीम करने के बजाय, मेमोरी में स्ट्रीम करना मानते हैं.
बंद करें embind XMLHttpRequest.abort
GAP फे़च एपीआई: HowToSignal और locateController

PPB_URLRequestInfo

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind XMLHttpRequest
embind डेटा फ़ेच करने का अनुरोध
SetProperty GAP GAP - XMLHttpRequest के लिए कोई सीधा मिलता-जुलता विकल्प नहीं है XMLHttpRequest, रीडायरेक्ट, किसी फ़ाइल पर स्ट्रीम करने, रेफ़रल देने वाले या क्रेडेंशियल की नीति सेट करने के बाद हर अनुरोध की सीमा तय करने के सीधे तरीके नहीं देता.
embind अनुरोध करें.*
AppendDataToBody embind XMLHttpRequest.send GAP - दोनों इमेज में पूरा बॉडी होना चाहिए, न कि सिर्फ़ एक हिस्सा.
embind fetch(.., options:body)
AppendFileToBody GAP Bring() अपलोड स्ट्रीमिंग https://www.chromestatus.com/features/5274139738767360
'लागू नहीं' के तौर पर जवाब देना <form> इसे FileReader की मदद से भी पढ़ा जा सकता है और अपलोड किया जा सकता है. हालांकि, यह PendingDataToBody की तरह ही है

PPB_URLResponseInfo

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetProperty embind XMLHttpRequest.getAllResponseHeaders + अन्य
embind जवाब फ़ेच करें.*
GetBodyAsFileRef embind फ़ेच रिस्पॉन्स (बॉडी) .blob() मान लेता है कि स्टोरेज लेयर, ट्रांसफ़र को ऑप्टिमाइज़ करती है.

PPB_Var

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना
VarToResource 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना

PPB_VarArray

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
पाएं embind Array[i]
सेट करें embind Array[i] = x
GetLength embind Array.length
SetLength embind अरे.length = n

PPB_VarArrayBuffer

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind नया ArrayBuffer(n)
ByteLength embind ArrayBuffer.byteLength
मैप GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं Asm.js / Wasm मॉड्यूल, सिंगल लीनियर मेमोरी हीप के अलावा, किसी ArrayBuffer के इलाकों को मैप नहीं कर सका. आने वाले समय में कई यादें जुड़ने या मेमोरी मैपिंग से इसे बेहतर बनाया जा सकता है.
अनमैप करना GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_VarDictionary

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind {}
पाएं embind <Object>[i]
सेट करें embind <Object>[i] = x
मिटाएं embind delete <Object>[i]
HasKey embind <Object> में x
GetKeys embind (<Object> में k) {} के लिए ऐसी कोई मशीन नहीं है, लेकिन इसे बनाया जा सकता है.

PPB_VideoDecoder

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP GAP - इसे VideoDecoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
शुरू करें GAP GAP - VideoDecoder() शुरू करने के पैरामीटर (VideoDecoderInitParameters) का इस्तेमाल करके, सुझाए गए WebCodecs API को हैंडल किया जाएगा https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP - सुझाए गए WebCodecs API के साथ ReadableStream.इंटरनेट से कनेक्ट करना(VideoDecoder) का इस्तेमाल करना https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
GetPicture GAP GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट की जाती है(VideoDecoder).popTo(VideoTrackWriter().writable) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
RecyclePicture GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. मौजूदा डिज़ाइन अपने-आप तस्वीरों को रीसाइकल करेगा और डिकोड करने की प्रोसेस को जारी रखेगा. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
फ़्लश GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. इस एपीआई को Flush() कहा जाएगा. हालांकि, इस पर अब भी चर्चा चल रही है कि डिकोड करने वाले कॉल को क्रम में कैसे लगाया जाएगा. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
रीसेट करें GAP GAP - सुझाए गए WebCodecs API की मदद से, VideoDecoder के इंस्टेंस को मिटाकर और नया इंस्टेंस बनाया जाएगा. यह रीसेट करने के खास तरीके के मुकाबले उतना असरदार नहीं होगा. हालांकि, Reset() API के लिए सेमेंटेक्स पर अब भी चर्चा की जा रही है. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP GAP - को VideoEncoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ हैंडल किया जाएगा
GetSupportedProfiles GAP GAP (कुछ हद तक) - navigator.mediaCapabilities.encodingInfo() काम करने वाली प्रोफ़ाइलों को एक-एक करके देखना होगा.
शुरू करें GAP GAP - इसे VideoEncoder() के शुरू करने के पैरामीटर का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा
GetFramesRequired GAP GAP - कोई मिलता-जुलता नहीं इस बात की संभावना नहीं है कि Web Codecs API के ज़रिए अंदरूनी तौर पर इस्तेमाल किया गया फ़्रेम पूल दिखाया गया हो.
GetFrameCodedSize GAP GAP - कोई मिलता-जुलता नहीं ऐसा हो सकता है कि Web Codecs API के अंदर इस्तेमाल किए गए फ़्रेम पूल को एक्सपोज़ न किया गया हो.
GetVideoFrame GAP GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट करने के टूल(VideoEncoder) को हैंडल करना होता है. यह डेटा को कोड में बदलने से पहले, डेटा भरने के लिए एक फ़्रेम लेने के बजाय, सीधे पढ़ने लायक स्ट्रीम में डेटा को कोड में बदल देगा.
एन्कोड GAP GAP - इसे ReadableStream.pipeThrough(VideoEncoder) का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा
GetBitstreamBuffer GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन अपने-आप कोड में बदले गए बिटस्ट्रीम बफ़र से होकर गुज़र जाएगा, जिससे पाइपलाइनिंग होती है. फ़िलहाल, WebCodecs API को लगता है कि बिटस्ट्रीम बफ़र को पूल करने के बजाय कॉपी किया जा सकता है. इसलिए, इसे रीसाइकल करने की ज़रूरत नहीं पड़ेगी.
RecycleBitstreamBuffer GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन, एन्कोडिंग की प्रोसेस जारी रखने के लिए, बफ़र को अपने-आप रीसाइकल करेगा. आने वाले समय में इस बदलाव की संभावना नहीं है, क्योंकि परफ़ॉर्मेंस पर असर कम होता है.
RequestEncodingParametersChange GAP GAP - इसे प्रस्तावित वेब कोडेक एपीआई से मैनेज किया जाएगा. कुछ पैरामीटर को फ़्लाई पर बदला जा सकता है, जबकि अन्य पैरामीटर के लिए एन्कोडर को बंद करना होगा.
बंद करें GAP GAP - को VideoEncoder.close() का इस्तेमाल करके प्रस्तावित WebCodecs API की मदद से हैंडल किया जाएगा

PPB_VideoFrame

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetTimestamp GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा.
SetTimestamp GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetFormat GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetSize GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetDataBuffer GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा.
GetDataBufferSize GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा.

PPB_View

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled सिर्फ़ एक एलिमेंट के बजाय, दस्तावेज़ के हिसाब से काम करता है.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientRect().width / <Element>.offsetWidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP WebSocket.WebSocket
कनेक्ट करें GAP WebSocket.WebSocket(url, ...) WebSocket 'open' इवेंट
बंद करें GAP WebSocket.close
ReceiveMessage GAP WebSocket 'मैसेज' इवेंट WebSocket 'गड़बड़ी' इवेंट WebSocket 'बंद है' इवेंट
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GetCloseWasClean GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
Graphics3DContextLost SDL कैनवस 'webglcontextlost' इवेंट

PPP_InputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleInputEvent SDL Element.addEventListener

PPP_Instance

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
DidCreate 'लागू नहीं' के तौर पर जवाब देना &lt;Element&gt;[key] सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है
DidDestroy 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना NaCl के लिए ट्रिगर नहीं किया गया
DidChangeView 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'resize' इवेंट
DidChangeFocus 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट
HandleDocumentLoad 'लागू नहीं' के तौर पर जवाब देना GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है ऐप्लिकेशन और मेनिफ़ेस्ट एंट्री की मदद से, NaCl मॉड्यूल को खास तरह के MIME टाइप को हैंडल करने के लिए सेट अप किया जा सकता है.

PPP_MessageHandler

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleMessage embind MessagePort 'message' इवेंट Window 'message' इवेंट
HandleBlockingMessage 'लागू नहीं' के तौर पर जवाब देना GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं ऐसा ही, Atomics.wait की मदद से मुख्य थ्रेड में किया जा सकता है. इसे सिंक्रोनस प्लगिन एपीआई के एम्युलेशन में मदद करने के लिए जोड़ा गया था.

PPP_Messaging

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleMessage embind MessagePort 'message' इवेंट Window 'message' इवेंट

PPP_MouseLock

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
MouseLockLost SDL एलिमेंट 'pointerlockchange', 'pointerlockerror' इवेंट

आईआरटी

PPB_Audio

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं x एसडीएल (आंशिक) GAP (आंशिक) - AudioWorkletNode ROUGHLY के बराबर AudioWorkletSpec तैयार है, लेकिन हो सकता है कि इस एपीआई के लिए AudioDeviceClient बेहतर हो. AudioDeviceClient को अब भी कम्यूनिटी तय कर रही है. यह ज़रूरी नहीं है कि वर्कलेट इस एपीआई के लिए करीब से मिलता-जुलता हो.
GetCurrentConfig SDL ऑडियो कॉन्टेक्स्ट.* (पास की गई सेटिंग वापस पाता है)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetTimestamp SDL AudioBufferSourceNode.start (पैरामीटर) बफ़र से जुड़ने के बजाय, हर बार पास किया जाता है.
SetTimestamp SDL AudioBufferSourceNode.start (पैरामीटर)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP - WebAudio केवल 32-बिट फ़्लोट का उपयोग करता है, PPAPI 16-बिट इंटेंट करता है. PPAPI सैद्धांतिक तौर पर, सैंपलिंग के कई साइज़ के साथ काम करता है. असल में, यह सिर्फ़ 16-बिट सैंपल के साथ काम करता है. माफ़ करें, डेवलपर ने मेमोरी के इस्तेमाल में बचत करने के लिए, 16-बिट सैंपल साइज़ का अनुरोध किया है. वेब ऑडियो की खास बातों का अगला वर्शन, 16-बिट सैंपल के साथ काम करेगा. Firefox की तरह ही, AudioBuffer को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, decodeAudioData से मिलने वाले ऑडियो के लिए 16-बिट बफ़र का इस्तेमाल करें
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
CreateStereo16बिट GAP GAP - केवल 32-बिट फ़्लोट नमूने समर्थित हैं वेब ऑडियो स्पेसिफ़िकेशन के अगले वर्शन में, 16-बिट सैंपल के लिए सहायता लागू की जाएगी.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (डिफ़ॉल्ट कंस्ट्रक्शन से) AudioContext में, डिफ़ॉल्ट रूप से हार्डवेयर ऑडियो डिवाइस के असल सैंपल रेट से मेल खाने वाला सैंपल रेट सेट होगा.
RecommendSampleFrameCount GAP GAP - को पहले से तय AudioDeviceClient के साथ हैंडल किया जाएगा उपयोगकर्ता के तय किए गए साइज़ की अनुमति देने से जुड़ी समस्या अब भी हल नहीं हुई है. हालांकि, इस पर काम जारी है. शायद यह AudioDeviceClient के साथ सबसे अच्छी तरह से मैनेज किया जाता है, जिससे आपको यह पता चल सकता है कि दिए गए हार्डवेयर के लिए सही साइज़ क्या होगा.

PPB_Console

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
लॉग utime console.log/warn/error/...
LogWithSource GAP GAP Console API को LogWithSource की जगह पूरी तरह से इस्तेमाल किया जा सकता है. हालांकि, अगर डेवलपर ने LogWithSource की सुविधा के लिए इस्तेमाल के खास उदाहरण दिए हैं, तो Console API का इस्तेमाल नहीं किया जा सकता. DevTools के सोर्स मैप का इस्तेमाल, ट्रांसपाइल किए गए JavaScript को उसकी मूल सोर्स भाषा में डीबग करने के लिए किया जा सकता है.

PPB_Core

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
getTime utime नई तारीख().getTime()
getTimeTicks यूटाइम new Date().getTime()
IsMainThread GAP window.document !== undefined
CallOnMainThread GAP Worker.postMessage + Atomics.wait मिलते-जुलते सिंक बनाए जा सकते हैं.

PPB_FileIO

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं एफ़एस (कुछ हिस्से के लिए) window.chooseFileSystemEntries() बनाएं और खोलें का इस्तेमाल अलग-अलग तरीके से किया जाता है, लेकिन दोनों ही टाइल की ताकत एक जैसी होती है.
खोलें एफ़एस (कुछ हिस्से के लिए) window.chooseFileSystemEntries()
क्वेरी एफ़एस (कुछ हिस्से के लिए) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last फ़ायदेमंद GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता.
छूकर एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true})
पढ़ें FS (आंशिक) Blob.slice().arrayBuffer()
लिखें एफ़एस (कुछ हिस्से के लिए) FileSystemWriter.write()
SetLength एफ़एस (कुछ हिस्से के लिए) FileSystemWriter.truncate()
फ़्लश GAP (आंशिक) GAP (कुछ हद तक) - FileSystemWrite.close() को कॉल करने पर, फ़ाइलें फ़्लश हो जाती हैं इसे डिज़ाइन करने के मकसद से बनाया गया है, क्योंकि Native File System API फ़ाइलें, ओएस के संपर्क में आती हैं. इसलिए, ओएस में डेटा दिखाए जाने से पहले, सुरक्षित ब्राउज़िंग की जांच करनी होगी.
बंद करें FS (आंशिक) FileSystemWriter.close() लंबित ऑपरेशन रद्द नहीं करता, लेकिन डिस्क पर अब तक लिखा गया कोई भी डेटा फ़्लश करता है.
ReadToArray GAP Blob.slice().arrayBuffer() या Blob.arrayBuffer() साथ-साथ एक से ज़्यादा सबरेंज को पढ़ने की अनुमति देता है.

PPB_FileRef

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true})
GetFileSystemType FS (आंशिक) FileSystem.type
GetName एफ़एस (कुछ हिस्से के लिए) File.name
GetPath FS (आंशिक) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है किसी फ़ाइल का ऐब्सलूट पाथ तय नहीं किया जा सकता. साथ ही, उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल मौजूद है.
GetParent एफ़एस (कुछ हिस्से के लिए) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल है.
MakeDirectory एफ़एस (कुछ हिस्से के लिए) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
छूकर एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getFile("name", {create: true}) बदलाव करने के लिए, लिखकर भी समय तय किया जा सकता है.
मिटाएं FS (आंशिक) FileSystemDirectoryHandle.removeEntry() PPAPI के उलट, डायरेक्ट्री का खाली होना ज़रूरी नहीं है.
नाम बदलें FS (आंशिक) GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल को नए नाम से लिखा जा सकता है. इसके लिए, नए नाम के लिए FileSystemFileHandle.getFile() और पुरानी फ़ाइल के कॉन्टेंट के लिए FileSystemFileHandle.createWriter().write() का इस्तेमाल करें. इसके बाद, पुरानी फ़ाइल मिटाने के लिए FileSystemDirectoryHandle.removeEntry() का इस्तेमाल करें. ऐसा कोई डायरेक्ट एपीआई नहीं है जो Native File System API में एक ही चरण में यह काम करेगा.
क्वेरी GAP (आंशिक) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता.
ReadDirectoryEntries एफ़एस (कुछ हिस्से के लिए) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं FS (आंशिक) window.requestFileSystem JS API, दोनों काम एक ही चरण में करता है
खोलें GAP window.requestFileSystem JS API एक चरण में दोनों काम करता है
GetType GAP FileSystem.type

PPB_Fullscreen

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
नमूना SDL गेमपैड.* Gamepad ऑब्जेक्ट, navigationStart के हिसाब से टाइमस्टैंप दिखाता है. हार्डवेयर से डेटा मिलने के बाद, इसे अपडेट कर दिया जाता है https://www.w3.org/TR/gamepad/#gamepad-interface

PPB_Graphics2D

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL Canvas.getContext('2d')
बताएं SDL Canvas.clientwidth + Canvas.clientHight
PaintImageData SDL CanvasRenderingContext2D.putImageData
स्क्रोल करें GAP CanvasrenderContext2D.scrollIntoView, CanvasrenderContext2D.drawImage GAP (कुछ हद तक) - इसे लागू करने के लिए, drawImage का इस्तेमाल करके कैनवस को खुद पर ऑफ़सेट के साथ ड्रॉ करें. इसके बाद, बाकी हिस्से को भरें.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
फ़्लश GAP इससे मिलता-जुलता कोई सीधा नहीं GAP (आंशिक) - ड्रॉ कोड के आखिर में हमेशा इंप्लिसिट फ़्लश होता है; इसकी संभावना नहीं है को बदलने के लिए. हालांकि, OffscreenCanvas और ImageBitmapRenderingContext का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (आंशिक) - WebGL 2.0 और OpenGL ES 3.0 के Emscripten के एक्सपोज़र, उपयोगकर्ता-तय किए गए मल्टीसैंपल किए गए फ़्रेमबफ़र के साथ काम करते हैं. इनमें PPAPI के ज़रिए कॉन्फ़िगर किए जा सकने वाले सभी पैरामीटर सेट किए जा सकते हैं.
बनाएं SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP इससे मिलता-जुलता कोई सीधा नहीं GAP (कुछ हद तक) - ड्रॉ कोड के आखिर में हमेशा एक फ़्लश होता है. ऐसा होने की संभावना कम है कि यह बदले. हालांकि, OffscreenCanvas और ImageBitmapRenderingContext का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है.

PPB_ImageData

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetNativeImageDataFormat SDL ImageData के लिए RGBA क्रम ज़रूरी है
IsImageDataFormatSupported SDL ImageData के लिए RGBA क्रम ज़रूरी है
बनाएं SDL CanvasRenderingContext2d.createImageData
जानकारी SDL ImageData में कभी भी पैरों के बीच की दूरी नहीं होती
मैप SDL ImageData.data
अनमैप करना SDL ImageData.data

PPB_InputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
RequestInputEvents SDL इससे मिलता-जुलता कोई सीधा नहीं इस सुविधा के न होने से शायद कोई फ़र्क़ न पड़े, क्योंकि JS / Wasm मुख्य थ्रेड पर चलता है और क्रॉस प्रोसेस राउंड-ट्रिप के बिना इवेंट को आसानी से फ़िल्टर किया जा सकता है.
RequestFilteringInputEvents SDL माउस* की* व्हील* टच* कंपोज़िशन* इवेंट
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL इवेंट क्लास डिसेंडेंट
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL 'dblclick' बनाम 'mousedown' इवेंट
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (इस बारे में खुद पता लगाने के लिए)

PPB_IMEInputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं इस डेटा को CompositionEvent.data से वापस पाया जा सकता है.
GetSegmentOffset GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetTargetSegment GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं
GetSelection GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_Instance

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
BindGraphics SDL Canvas.getContext (बांडिंग अपने-आप होने की वजह से, यह ज़रूरी नहीं है).
IsFullFrame GAP GAP - MIME टाइप हैंडलर के बराबर कोई नहीं. NaCl ऐप्लिकेशन, किसी खास MIME टाइप को मैनेज करने और पूरे दस्तावेज़ का मालिकाना हक रखने के लिए रजिस्टर किए जा सकते हैं.
DidCreate 'लागू नहीं' के तौर पर जवाब देना &lt;Element&gt;[key] सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है
DidDestroy 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना NaCl के लिए ट्रिगर नहीं किया गया
DidChangeView 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'resize' इवेंट
DidChangeFocus 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट
HandleDocumentLoad 'लागू नहीं' के तौर पर जवाब देना GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है कुछ खास तरह के MIME टाइप को मैनेज करने के लिए, ऐप्लिकेशन के ज़रिए NaCl मॉड्यूल + मेनिफ़ेस्ट एंट्री सेट अप की जा सकती है.

PPB_MediaStreamAudioTrack

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
कॉन्फ़िगर करें GAP getUserMedia() getUserMedia() की पाबंदियों से, MediaStreamTrack में इस्तेमाल करने के लिए कॉन्फ़िगरेशन वैल्यू मिल सकती हैं.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP - कोई मिलता-जुलता नहीं
RecycleBuffer GAP GAP - कोई मिलता-जुलता नहीं
बंद करें GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP कैनवस कैप्चर कैनवस कैप्चर की मदद से, प्रोग्राम के हिसाब से वीडियो फ़्रेम जोड़े जा सकते हैं.
कॉन्फ़िगर करें GAP applyConstraints(), getUserMedia() GAP (आंशिक) - वेब API में उपलब्ध कॉन्फ़िगरेशन की सीमा PPAPI से अलग हो सकती है.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP - PP_MEDIASTREAMVIDEOSTREAM_ATTRIB_BUFFERED_FRAMES के बराबर नहीं MediaStream को पहले से लोड नहीं किया जा सकता. इसलिए, यह कभी भी बफ़र नहीं होगा: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP - PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT के बराबर कोई एट्रिब्यूट नहीं है
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - कोई समतुल्य नहीं
RecycleFrame GAP GAP - कोई मिलता-जुलता नहीं
बंद करें GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - कोई समतुल्य नहीं
PutFrame GAP GAP - कोई समतुल्य नहीं

PPB_MessageLoop

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है.
GetForMainThread 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
GetCurrent 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
AttachToCurrentThread 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
चलाएं 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है.
PostWork 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.
PostQuit 'लागू नहीं' के तौर पर जवाब देना ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है.

PPB_Messaging

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
PostMessage 'लागू नहीं' के तौर पर जवाब देना Window.postMessage
RegisterMessageHandler 'लागू नहीं' के तौर पर जवाब देना Window.addEventListener
UnregisterMessageHandler 'लागू नहीं' के तौर पर जवाब देना Window.removeEventListener

PPB_MouseCursor

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
SetCursor SDL Element.style.cursor स्टॉक कर्सर का एक ही सेट इस्तेमाल किया जा सकता है. कस्टम कर्सर, url(..) का इस्तेमाल करके बनाए जा सकते हैं. डाइनैमिक कस्टम कर्सर, डेटा यूआरआई का इस्तेमाल करके बनाए जा सकते हैं. CSS3, हॉटस्पॉट तय करने की सुविधा देता है.

PPB_MouseLock

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
कई तरीके OpenGLES काम करने के लिए, WebGL 1.0 के करीब हो.
x OffscreenCanvas

PPB_TextInputController

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
SetTextInputType GAP GAP - इनपुट के तरीके का संपादक एपीआई से भरा जा सकता है कुछ डेवलपर या तो इस तरीके से संकेत देना चाहते हैं या किसी कैनवस के अंदर इनलाइन इवेंट / आउटपुट इनलाइन को रोकने और दिखाने की सुविधा को प्राथमिकता देते हैं.
UpdateCaretPosition GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया https://www.w3.org/TR/ime-api/

PPB_URLLoader

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind new XMLHttpRequest();
खोलें embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP - कोई XMLHTTPRequest समान नहीं
GetUploadProgress embind XMLHttpRequest 'प्रोग्रेस' इवेंट
GAP FetchObserver अभी तक इसके लिए कोई खास जानकारी नहीं दी गई है या इसे लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind XMLHttpRequest 'प्रोग्रेस' इवेंट
GAP FetchObserver अभी तक तय या लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind जवाब फ़ेच करें.*
ReadResponseBody embind XMLHttpRequest.response
embind मुख्य हिस्सा.* (रिस्पॉन्स एक मुख्य हिस्सा होता है)
FinishStreamingToFile embind GAP - कोई प्रत्यक्ष समतुल्य नहीं XMLHttpRequest और 'फ़ेच करें', दोनों ही सीधे तौर पर स्टोरेज में स्ट्रीम करने के बजाय, मेमोरी में स्ट्रीम करना मानते हैं.
बंद करें embind XMLHttpRequest.abort
GAP फे़च एपीआई: HowToSignal और locateController

PPB_URLRequestInfo

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind XMLHttpRequest
embind डेटा फ़ेच करने का अनुरोध
SetProperty GAP GAP - XMLHttpRequest के लिए कोई सीधा मिलता-जुलता विकल्प नहीं है XMLHttpRequest, रीडायरेक्ट, किसी फ़ाइल पर स्ट्रीम करने, रेफ़रल देने वाले या क्रेडेंशियल की नीति सेट करने के बाद हर अनुरोध की सीमा तय करने के सीधे तरीके नहीं देता.
embind अनुरोध करें.*
AppendDataToBody embind XMLHttpRequest.send GAP - दोनों इमेज में पूरा बॉडी होना चाहिए, न कि सिर्फ़ एक हिस्सा.
embind fetch(.., options:body)
AppendFileToBody GAP Bring() अपलोड स्ट्रीमिंग https://www.chromestatus.com/features/5274139738767360
'लागू नहीं' के तौर पर जवाब देना &lt;form&gt; इसे FileReader की मदद से भी पढ़ा जा सकता है और अपलोड किया जा सकता है. हालांकि, यह PendingDataToBody की तरह ही है

PPB_URLResponseInfo

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetProperty embind XMLHttpRequest.getAllResponseHeaders + अन्य
embind जवाब फ़ेच करें.*
GetBodyAsFileRef embind फ़ेच रिस्पॉन्स (बॉडी) .blob() मान लेता है कि स्टोरेज लेयर, ट्रांसफ़र को ऑप्टिमाइज़ करती है.

PPB_Var

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना
VarToResource 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना

PPB_VarArray

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
पाएं embind Array[i]
सेट करें embind Array[i] = x
GetLength embind Array.length
SetLength embind अरे.length = n

PPB_VarArrayBuffer

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind नया ArrayBuffer(n)
ByteLength embind ArrayBuffer.byteLength
मैप GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं Asm.js / Wasm मॉड्यूल, सिंगल लीनियर मेमोरी हीप के अलावा, किसी ArrayBuffer के इलाकों को मैप नहीं कर सका. आने वाले समय में कई यादें जुड़ने या मेमोरी मैपिंग से इसे बेहतर बनाया जा सकता है.
अनमैप करना GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_VarDictionary

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं embind {}
पाएं embind &lt;Object&gt;[i]
सेट करें embind <Object>[i] = x
मिटाएं embind delete <Object>[i]
HasKey embind <Object> में x
GetKeys embind (<Object> में k) {} के लिए ऐसी कोई मशीन नहीं है, लेकिन इसे बनाया जा सकता है.

PPB_VideoDecoder

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP GAP - इसे VideoDecoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
शुरू करें GAP GAP - VideoDecoder() शुरू करने के पैरामीटर (VideoDecoderInitParameters) का इस्तेमाल करके, सुझाए गए WebCodecs API को हैंडल किया जाएगा https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP - सुझाए गए WebCodecs API के साथ ReadableStream.इंटरनेट से कनेक्ट करना(VideoDecoder) का इस्तेमाल करना https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
GetPicture GAP GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट की जाती है(VideoDecoder).popTo(VideoTrackWriter().writable) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
RecyclePicture GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. मौजूदा डिज़ाइन अपने-आप तस्वीरों को रीसाइकल करेगा और डिकोड करने की प्रोसेस को जारी रखेगा. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
फ़्लश GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. इस एपीआई को Flush() कहा जाएगा. हालांकि, इस पर अब भी चर्चा चल रही है कि डिकोड करने वाले कॉल को क्रम में कैसे लगाया जाएगा. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
रीसेट करें GAP GAP - सुझाए गए WebCodecs API की मदद से, VideoDecoder के इंस्टेंस को मिटाकर और नया इंस्टेंस बनाया जाएगा. यह रीसेट करने के खास तरीके के मुकाबले उतना असरदार नहीं होगा. हालांकि, Reset() API के लिए सेमेंटेक्स पर अब भी चर्चा की जा रही है. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP GAP - को VideoEncoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ हैंडल किया जाएगा
GetSupportedProfiles GAP GAP (कुछ हद तक) - navigator.mediaCapabilities.encodingInfo() काम करने वाली प्रोफ़ाइलों को एक-एक करके देखना होगा.
शुरू करें GAP GAP - इसे VideoEncoder() के शुरू करने के पैरामीटर का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा
GetFramesRequired GAP GAP - कोई मिलता-जुलता नहीं इस बात की संभावना नहीं है कि Web Codecs API के ज़रिए अंदरूनी तौर पर इस्तेमाल किया गया फ़्रेम पूल दिखाया गया हो.
GetFrameCodedSize GAP GAP - कोई मिलता-जुलता नहीं ऐसा हो सकता है कि Web Codecs API के अंदर इस्तेमाल किए गए फ़्रेम पूल को एक्सपोज़ न किया गया हो.
GetVideoFrame GAP GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट करने के टूल(VideoEncoder) को हैंडल करना होता है. यह डेटा को कोड में बदलने से पहले, डेटा भरने के लिए एक फ़्रेम लेने के बजाय, सीधे पढ़ने लायक स्ट्रीम में डेटा को कोड में बदल देगा.
एन्कोड GAP GAP - इसे ReadableStream.pipeThrough(VideoEncoder) का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा
GetBitstreamBuffer GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन अपने-आप कोड में बदले गए बिटस्ट्रीम बफ़र से होकर गुज़र जाएगा, जिससे पाइपलाइनिंग होती है. फ़िलहाल, WebCodecs API को लगता है कि बिटस्ट्रीम बफ़र को पूल करने के बजाय कॉपी किया जा सकता है. इसलिए, इसे रीसाइकल करने की ज़रूरत नहीं पड़ेगी.
RecycleBitstreamBuffer GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन, एन्कोडिंग की प्रोसेस जारी रखने के लिए, बफ़र को अपने-आप रीसाइकल करेगा. आने वाले समय में इस बदलाव की संभावना नहीं है, क्योंकि परफ़ॉर्मेंस पर असर कम होता है.
RequestEncodingParametersChange GAP GAP - इसे प्रस्तावित वेब कोडेक एपीआई से मैनेज किया जाएगा. कुछ पैरामीटर को फ़्लाई पर बदला जा सकता है, जबकि अन्य पैरामीटर के लिए एन्कोडर को बंद करना होगा.
बंद करें GAP GAP - को VideoEncoder.close() का इस्तेमाल करके प्रस्तावित WebCodecs API की मदद से हैंडल किया जाएगा

PPB_VideoFrame

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetTimestamp GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा.
SetTimestamp GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetFormat GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetSize GAP GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा.
GetDataBuffer GAP GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा.
GetDataBufferSize GAP GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा.

PPB_View

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled सिर्फ़ एक एलिमेंट के बजाय, दस्तावेज़ के हिसाब से काम करता है.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientRect().width / <Element>.offsetWidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं GAP WebSocket.WebSocket
कनेक्ट करें GAP WebSocket.WebSocket(url, ...) WebSocket 'open' इवेंट
बंद करें GAP WebSocket.close
ReceiveMessage GAP WebSocket 'मैसेज' इवेंट WebSocket 'गड़बड़ी' इवेंट WebSocket 'बंद है' इवेंट
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GetCloseWasClean GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
Graphics3DContextLost SDL कैनवस 'webglcontextlost' इवेंट

PPP_InputEvent

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleInputEvent SDL Element.addEventListener

PPP_Instance

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
DidCreate 'लागू नहीं' के तौर पर जवाब देना &lt;Element&gt;[key] सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है
DidDestroy 'लागू नहीं' के तौर पर जवाब देना 'लागू नहीं' के तौर पर जवाब देना NaCl के लिए ट्रिगर नहीं किया गया
DidChangeView 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'resize' इवेंट
DidChangeFocus 'लागू नहीं' के तौर पर जवाब देना एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट
HandleDocumentLoad 'लागू नहीं' के तौर पर जवाब देना GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है ऐप्लिकेशन और मेनिफ़ेस्ट एंट्री की मदद से, NaCl मॉड्यूल को खास तरह के MIME टाइप को हैंडल करने के लिए सेट अप किया जा सकता है.

PPP_MessageHandler

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleMessage embind MessagePort 'message' इवेंट Window 'message' इवेंट
HandleBlockingMessage 'लागू नहीं' के तौर पर जवाब देना GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं ऐसा ही, Atomics.wait की मदद से मुख्य थ्रेड में किया जा सकता है. इसे सिंक्रोनस प्लगिन एपीआई के एम्युलेशन में मदद करने के लिए जोड़ा गया था.

PPP_Messaging

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
HandleMessage embind MessagePort 'message' इवेंट Window 'message' इवेंट

PPP_MouseLock

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
MouseLockLost SDL एलिमेंट 'pointerlockchange', 'pointerlockerror' इवेंट

PPAPI (ऐप्लिकेशन)

PPB_HostResolver

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं x GAP GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं
समस्या हल करें x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं
GetCanonicalName x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं
GetNetAddressCount x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं
GetNetAddress x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं

PPB_NetAddress

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
CreateFromIPv4Address x GAP GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं
CreateFromIPv6Address x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं
GetFamily x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं
DescribeAsString x GAP GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं
DescribeAsIPv4Address x GAP GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं
DescribeAsIPv6Address x GAP GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं

PPB_NetworkList

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetCount x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं
GetName x GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetType x GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetState x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं
GetIpAddress x GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetDisplayName x GAP GAP - कोई प्रत्यक्ष समतुल्य नहीं
GetMTU x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_NetworkMonitor

PPAPI का तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
बनाएं x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं
UpdateNetworkList x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_NetworkProxy

PPAPI तरीका थ्रेड को मान लेता है एमस्क्रिप्टन Web API सीमाएं
GetProxyForURL x GAP GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं

PPB_TCPSocket और PPB_UDPSocket

माइग्रेशन के लिए, सीधे तौर पर 1:1 मैपिंग नहीं की जा सकती. इसके बजाय, हमने पब्लिशर के लिए उपयोगकर्ता की स्थिति की जानकारी और सुझाया गया माइग्रेशन पाथ क्या है.

इस्तेमाल का उदाहरण सुझाव
स्क्रीन शेयर करना getDisplayMedia और WebRTC ( डेमो)
बैंडविड्थ के इस्तेमाल को कम करने के लिए, लोकल सर्वर से लोड करना XHR, फ़ेच, स्ट्रीम, सर्विस वर्कर, कैश एपीआई
इससे लोड हो रहा है: वेब ऐप्लिकेशन का लोकल इंस्टेंस / वेब ऐप्लिकेशन के लोकल इंस्टेंस से कनेक्ट करना WebRTC
चैट करें WebSocket*
रीयलटाइम ऑडियो/वीडियो कम्यूनिकेशन WebRTC
दूसरे लोगों के साथ मिलकर काम करने का ऐक्सेस WebSocket*
रीयलटाइम मल्टीप्लेयर गेम WebTransport** अगर P2P नहीं है, तो WebRTC (या RTCIceTransport के ऊपर WebTransport)
रीयलटाइम इंटरैक्टिव स्ट्रीमिंग WebTransport**
लेगसी सर्वर से कम्यूनिकेट करना प्रोटोकॉल कन्वर्ज़न करने के लिए प्रॉक्सी सर्वर या मिडलवेयर. इसके लिए फ़ीडबैक दें bit.ly/network-api-gaps

*: या आने वाले समय में WebTransport

**: इसकी उपलब्धता के बारे में जानने के लिए, chromestatus पर जाएं