+ All Categories
Home > Documents > Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea...

Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea...

Date post: 17-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
169
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web la nivel de client API - uri JavaScript oferite de browser (II) christmasexperiments.com
Transcript
Page 1: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web la nivel de client

API-uri JavaScript oferite de browser (II)

christmasexperiments.com

Page 2: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

“Walking on water and developing software from a specification are easy if both are frozen.”

Edward Berard

Page 3: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Ce alte specificații/inițiative privind HTML5 pot fi folosite?

Page 4: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

HTML5

lista API-urilor HTML5 existente: html5index.org

suportul dat de browser Web (mobil): whatwebcando.today

Page 5: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Aspecte referitoare la interacțiunea cu utilizatorul

Page 6: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Pointer Events

unifică maniera de preluare de date – via mouse ori suprafețe tactile – în urma interacțiunii cu utilizatorul

pointer = a hardware agnostic representation of input devices that can target

a specific (set of) coordinate(s) on a screen

Page 7: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Pointer Events

nivelul 1 – recomandare W3C: www.w3.org/TR/pointerevents/

nivelul 2 – W3C Candidate Rec. (11 dec. 2018)www.w3.org/TR/pointerevents2/

Page 8: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

interface PointerEvent : MouseEvent {

readonly attribute long pointerId;

readonly attribute double width;

readonly attribute double height;

readonly attribute float pressure;

readonly attribute float tangentialPressure;

readonly attribute long tiltX;

readonly attribute long tiltY;

readonly attribute long twist;

readonly attribute DOMString pointerType; // mouse, pen, touch

readonly attribute boolean isPrimary;

};

evenimente:gotpointercapture lostpointercapture

pointerdown pointerup pointercancel

pointermove pointerover pointerout

pointerenter pointerleave

Page 9: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

touch/pointer tests & demospatrickhlauke.github.io/touch/

Page 10: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

PointerLock API

oferă acces la date primare vizând mișcările mouse-ului atunci când interacțiunea se axează (e „blocată”)

asupra unui element specific fără a se reda cursorul

Page 11: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

PointerLock API

util pentru aplicații de editare/modelare 3D, jocuri 3D,…

recomandare W3C (2016): www.w3.org/TR/pointerlock/

noua variantă (ciornă, decembrie 2018):w3c.github.io/pointerlock/

Page 12: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemplificări:developer.mozilla.org/Web/API/Pointer_Lock_API

codepen.io/MSEdgeDev/details/zqYBbb

Page 13: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Clipboard API and Events

vizează manipularea clipboard-ului în cadrul navigatorului Web

W3C Working Draft (8 noiembrie 2018)www.w3.org/TR/clipboard-apis/

Page 14: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Clipboard API and Events

operațiile se desfășoară în mod sincron

evenimente: copy cut paste

Page 15: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Clipboard API and Events

tipuri MIME (Media-Types) uzuale ce pot fi folosite pentru interschimb de date via clipboard:

text/plain text/uri-list text/csv text/html

application/json application/xml text/xml

Page 16: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

accesarea clipboard-ului depinde de navigatorul Web

un ghid de utilizare:www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/

Page 17: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Notifications

alertarea utilizatorului în afara contextului paginii Webasupra apariției unui eveniment

recomandare a Consorțiului Web (2015)www.w3.org/TR/notifications/

Notifications API HTML5 Living Standard (12 dec. 2018)notifications.spec.whatwg.org/

Page 18: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

[Constructor(DOMString title, optional NotificationOptions options),

Exposed=(Window, Worker)] // notificările pot fi emise și de un worker Web

interface Notification : EventTarget {

static readonly attribute NotificationPermission permission;

[Exposed=Window] static Promise<NotificationPermission> requestPermission

(optional NotificationPermissionCallback deprecatedCallback);

static readonly attribute unsigned long maxActions;

attribute EventHandler onclick;

attribute EventHandler onshow;

attribute EventHandler onerror;

attribute EventHandler onclose;

readonly attribute DOMString title;

readonly attribute DOMString lang;

readonly attribute DOMString body;

readonly attribute DOMString tag;

readonly attribute USVString image;

readonly attribute USVString icon;

readonly attribute USVString badge;

Page 19: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

[SameObject] readonly attribute FrozenArray<unsigned long> vibrate;

readonly attribute DOMTimeStamp timestamp;

readonly attribute boolean renotify;

readonly attribute boolean silent;

readonly attribute boolean requireInteraction;

[SameObject] readonly attribute any data;

[SameObject] readonly attribute FrozenArray<NotificationAction> actions;

void close();

};

// permisiuni privind notificările

enum NotificationPermission { "default", "denied", "granted" };

dictionary NotificationAction {

required DOMString action;

required DOMString title;

USVString icon;

};

callback NotificationPermissionCallback =

void (NotificationPermission permission);

Page 20: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Notifications

// o notificare de interes

var notif = new Notification ("Ha, ha! Ai primit o notă la CLIW!",

{ icon: "nota10.svg", tag: "mesaj" });

onclick = function () { afișeazăMesaj (this); };

tutorial + exemplificări:developer.mozilla.org/docs/WebAPI/Using_Web_Notifications

Page 21: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Notifications

de experimentat și suita de exemple disponibile la github.com/AurelioDeRosa/HTML5-API-demos

Page 22: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 23: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor realizate via JavaScript

(timing control for script-based animations)

parte a standardului HTML 5.2

www.w3.org/TR/html52/webappapis.html#animation-frames

Page 24: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor

animațiile pot fi realizate:

declarativ(e.g., via CSS sau elementul <animate> oferit de SVG)

ori

prin program(implementate de un program JavaScript)

Page 25: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor

apare necesitatea de a cunoaște la nivel de cod care e frecvența ideală de a actualiza conținutul

dorit a fi animat (animation frame update)în funcție de capabilitățile disponibile la nivel de browser

Page 26: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor

metode noi specificate de interfața Window:

long requestAnimationFrame (FrameRequestCallback funcție)

semnalează navigatorului Web că o animație realizată prin program trebuie să fie planificată

Page 27: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor

metode noi specificate de interfața Window:

long requestAnimationFrame (FrameRequestCallback funcție)

semnalează navigatorului Web că o animație realizată prin program trebuie să fie planificată

actualizarea va fi efectuată o singură dată

Page 28: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Controlul temporizării animațiilor

metode noi specificate de interfața Window:

void cancelAnimationFrame (long handler)

anulează o cerere anterioară de actualizare a animației

Page 29: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

resurse adiționale:creativejs.com/resources/requestanimationframe/

developer.mozilla.org/Web/API/window.requestAnimationFrame

Page 30: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Animations

specificație vizând realizarea de animații prin programla nivel de document sau element HTML

în stadiu de ciornă la Consorțiul Web (10 decembrie 2018)drafts.csswg.org/web-animations/

Page 31: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Animations

interfețe: Animation KeyframeEffect AnimationTimeline

AnimationEvent DocumentTimeline EffectTiming

animațiile se realizează via metoda animate() și au asociate diverse proprietăți similare celor oferite de CSS

detalii:developer.mozilla.org/Web/API/Web_Animations_API/Using_the_Web_Animations_API

Page 32: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: Moș Crăciun animat

<div id="moș-crăciun">🎄🎅</div>

#moș-crăciun { font-size: 3em; width: 250px; height: 250px;

text-shadow: 0.1em 0.1em 0.3em #693; }

var moșCrăciun = document.getElementById ("moș-crăciun");

moșCrăciun.animate ([ // obiecte de tip Keyframe

{ transform: 'translateX(0) translateY(0)', opacity: 0.5, easing: 'ease-out' },

{ transform: 'translateX(100%) translateY(100%) rotate(33deg)' },

{ transform: 'translateX(0) translateY(0)', opacity: 1, easing: 'ease-in' } ],

{ // atribute privind animațiile – vezi AnimationEffectTimingProperties

duration: 10000, // 10 sec.

iterations: Infinity // ad infinitum

}

);

Page 33: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

studiu de caz: Moș Crăciun animat

codul-sursă este disponibil pe Web în cadrul JSFiddle: jsfiddle.net/busaco/syk2o98z/

Page 34: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

web-animations.github.io/web-animations-demos/

mozdevs.github.io/Animation-examples/

Alice in Web Animation Landcodepen.io/collection/bpEza/

Page 35: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 36: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

comunicare în timp-real (real time communication)între navigatoare Web în stilul peer-to-peer

WebRTC 1.0: Real-time Communication Between Browsers

(W3C Candidate Recommendation, 27 septembrie 2018)

www.w3.org/TR/webrtc/

Page 37: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

permite preluarea în timp-real a fluxurilor de date audio/video și interschimbul acestora

între browser-ele Web fără a necesita un intermediar

Page 38: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

utilizări:tele-conferințe

interschimb de fișieremanagementul identității utilizatoruluiasistarea/monitorizarea persoanelor

jocuri Web…

Page 39: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

MediaDevices

acces la dispozitivele de intrare conectate (e.g., Webcam, microfon)

developer.mozilla.org/Web/API/MediaDevices

Page 40: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

MediaDevices

metode: enumerateDevices() getSupportedConstraints()

getDisplayMedia() getUserMedia()

eveniment: ondevicechange

Page 41: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

MediaStream

acces la fluxuri multimedia (e.g., video și/sau audio) furnizate de un senzor local – tipic, Webcam

Media Capture & Streams (W3C Candidate Rec., oct. 2017)www.w3.org/TR/mediacapture-streams/

Page 42: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

[Exposed=Window,

Constructor,

Constructor(MediaStream stream),

Constructor(sequence<MediaStreamTrack> tracks)]

interface MediaStream : EventTarget {

readonly attribute DOMString id;

sequence<MediaStreamTrack> getAudioTracks ();

sequence<MediaStreamTrack> getVideoTracks ();

sequence<MediaStreamTrack> getTracks ();

MediaStreamTrack? getTrackById (DOMString trackId);

void addTrack (MediaStreamTrack track);

void removeTrack (MediaStreamTrack track);

MediaStream clone ();

readonly attribute boolean active;

attribute EventHandler onaddtrack;

attribute EventHandler onremovetrack;

};

developer.mozilla.org/docs/Web/API/Media_Streams_API

Page 43: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

[Exposed=Window]

interface MediaStreamTrack : EventTarget {

readonly attribute DOMString kind;

readonly attribute DOMString id;

readonly attribute DOMString label;

attribute boolean enabled;

readonly attribute boolean muted;

attribute EventHandler onmute;

attribute EventHandler onunmute;

readonly attribute MediaStreamTrackState readyState;

attribute EventHandler onended;

MediaStreamTrack clone ();

void stop ();

MediaTrackCapabilities getCapabilities ();

MediaTrackConstraints getConstraints ();

MediaTrackSettings getSettings ();

Promise<void> applyConstraints

(optional MediaTrackConstraints constraints);

attribute EventHandler onoverconstrained;

};

Page 44: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

// accesul la conținut multimedia local furnizat de un senzor (cameră Web)

// pe baza acordului utilizatorului

var video = document.querySelector('video');

// pot fi impuse diverse constrângeri (dorim doar video)

var constraints = { audio: false, video: true };

navigator.mediaDevices.getUserMedia(constraints)

.then(function(stream) {

var videoTracks = stream.getVideoTracks();

console.log ('Am preluat un flux video de la ' + videoTracks[0].label);

stream.onremovetrack = function() { console.log('Flux-ul video s-a terminat. '); };

video.srcObject = stream; // alimentăm <video> cu fluxul captat

})

.catch(function(error) {

if (error.name === 'ConstraintNotSatisfiedError') { // rezoluție necorespunzătoare

}

if (error.name === 'PermissionDeniedError') { // acces la Webcam refuzat

} // de utilizator

}

Page 45: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

tutoriale + exemplificări:developer.mozilla.org/Web/API/MediaDevices/getUserMedia

www.html5rocks.com/en/tutorials/getusermedia/intro/

www.sitepoint.com/introduction-getusermedia-api/

Page 46: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

RTCPeerConnection

permite ca doi utilizatori să comunice direct via browser

comunicațiile sunt coordonate pe baza unui canal(e.g., instanțiat de un program via XMLHttpRequest/Fetch)

Page 47: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

RTCPeerConnection

oferă suport și pentru controlul sesiunii de transfer aldatelor, plus trimiterea de mesaje speciale (signaling)

transmiterea efectivă poate adopta un anumit protocol bidirecțional – HTTP, SIP, XMPP,…

Page 48: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

a se experimenta și biblioteca adapter.jsgithub.com/webrtc/adapter

Page 49: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

diverse maniere de comunicare specificate de WebRTCdetalii la www.webrtc.org

Page 50: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

API de interes:

RTCDataChannel

interfață reprezentând un canal de comunicațiebidirecțională – via un protocol specific –

între două puncte terminale (peers)

permite interschimb eficient, în stilul peer-to-peer,de date arbitrare, nu doar audio și/sau video

Page 51: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

WebRTC

tutoriale + exemple (mai avansate):

www.html5rocks.com/en/tutorials/webrtc/basics/

developer.mozilla.org/Web/API/WebRTC_API/

webrtc.github.io/samples/

www.youtube.com/watch?v=PEXnbTyygi4

github.com/openrtc-io/awesome-webrtc

Page 52: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

iswebrtcreadyyet.com

suportul oferit de browser pentru diverse facilități WebRTC

Page 53: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

MediaStream Recording API

preia date de la un obiect MediaStream

în vederea procesării

poate fi folosită în conjuncție cu WebRTC API

specificație în lucru la Consorțiul Web (14 dec. 2018)w3c.github.io/mediacapture-record/

developer.mozilla.org/Web/API/MediaStream_Recording_API/

Page 54: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

aplicație demonstrativă:github.com/mdn/web-dictaphone

Page 55: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

suport pentru crearea, compunerea și prelucrarea fluxurilor de date

HTML5 Living Standard (9 decembrie 2018)streams.spec.whatwg.org

Page 56: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

fluxurile abstractizează accesul la date stocate parțialavând asociate primitive I/O de nivel scăzut

consumator

flux citibil(readable stream)

date procesate

lacăt

Page 57: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

fluxurile pot fi înlănțuite – pipes:ieșirea unui fluxintrarea altuia,

cu blocarea (locking) a acestor fluxuri

Page 58: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

backpressure = controlul „debitului” mesajelor transmise prin pipe-uri

Page 59: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

pot fi citite – ReadableStream – de către un consumator, în regim pull sau push

fragmentele de date (chunks) sunt preluate dintr-o coadă de mesaje, putând fi citit doar unul la un moment dat

datele binare pot fi citite via un flux de tip BYOB (Bring Your Own Buffer): ReadableStreamBYOBReader

Page 60: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

class ReadableStream { // definiție ES6

constructor(underlyingSource = {}, { size, highWaterMark } = {})

get locked () // este blocat (are asociat un lacăt)?

cancel (reason) // anulează operația de citire

getReader ()

// suport pentru realizarea de pipe-uri

pipeThrough ({ writable, readable }, options)

pipeTo (dest, { preventClose, preventAbort, preventCancel } = {})

// blochează fluxul, creând 2 fluxuri ramificate ce pot fi consumate

// independent (duplicarea sursei de date) – similar comenzii tee din Unix

tee ()

}

pentru detalii, a se studia:developer.mozilla.org/Web/API/Streams_API/Concepts

developer.mozilla.org/Web/API/ReadableStream

Page 61: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

pot fi scrise – WritableStream – de un producător

datele scrise (chunks) se „acumulează” într-un „dren” (underlying sink) care abstractizează

efectuarea operațiilor I/O de nivel scăzut

starea unui flux de scriere poate fi controlată de programator via WritableStreamDefaultController

Page 62: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

class WritableStream { // definiție ES6

constructor (underlyingSink = {}, { size, highWaterMark = 1 } = {})

get locked () // este blocat (are asociat un lacăt)?

abort (reason) // abandonează scrierea

getWriter ()

}

detalii + exemple demonstrative:developer.mozilla.org/Web/API/Streams_API/Using_writable_streams

github.com/mdn/dom-examples/tree/master/streams

jakearchibald.com/2016/streams-ftw/

Page 63: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

realizează o transformare a datelor – TransformStream –și constă dintr-o pereche de fluxuri (unul de scriere, celălalt de citire)

Page 64: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Streams API

realizează o transformare a datelor – TransformStream –și constă dintr-o pereche de fluxuri (unul de scriere, celălalt de citire)

posibile utilizări:(de)compresie de date prin GZIP, aplicarea în timp-real de efecte

vizuale asupra datelor transmise de Webcam, (de)codificare a textului într-un sistem P2P conversațional, conversie de formate

(e.g., CSV↔JSON), implementarea unui tunel folosind WebSocket-uri

Page 65: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

biblioteci utile:Highland – highlandjs.org

Sequency – winterbe.github.io/sequency/

Page 66: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

procesarea și sintetizarea conținutului sonor

W3C Candidate Recommendation (18 septembrie 2018)www.w3.org/TR/webaudio/

varianta cea mai recentă (16 noiembrie 2018):webaudio.github.io/web-audio-api/

Page 67: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Se pot defini contexte audio în care se pot aplica diverse procesări/filtre specifice

exemple: mixaje

modificări ale volumului (e.g., fade-in) interschimb de canale stereo

prelucrări în timp-real pe baza MediaStream

integrare cu WebRTC

efecte spațiale (e.g., concert hall, forest, amphitheater) compresie

Page 68: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 69: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

definirea unui „lanț” de procesări sonore:AudioContext

AudioNode

AudioParam

BaseAudioContext

Page 70: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

specificarea surselor de sunet:AudioBufferSourceNode

AudioScheduledSourceNode

AudioBuffer

MediaElementAudioSourceNode

MediaStreamAudioSourceNode

OscilattorNode

Page 71: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

filtre privind aplicarea de efecte audio:DelayNode

DynamicsCompressorNode

PeriodicWave

WaveShaperNode

Page 72: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

definirea destinației unei prelucrări sonore:AudioDestinationNode

MediaStreamAudioDestinationNode

Page 73: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

suport pentru analiza de sunet:AnalyserNode

suport privind canalele sonore (mono ↔ stereo):ChannelSplitterNode

ChannelMergerNode

Page 74: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

realizarea efectelor spațiale (audio spatialization):AudioListener

PannerNode

StereoPannerNode

developer.mozilla.org/Web/API/Web_Audio_API/Web_audio_spatialization_basics

Page 75: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

suport referitor la diverse procesări JavaScript și/sau Web Assembly via interfața Worklet

(variantă limitată a unui Web worker)

Page 76: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

exemplificări + tutoriale:

scenarii diverse de utilizaredeveloper.mozilla.org/Web/API/Web_Audio_API/Using_Web_Audio_API

developer.mozilla.org/Web/API/Web_Audio_API/Advanced_techniques

webaudio.github.io/demo-list/

interacțiuni multimedia via camera Webgithub.com/chrisjohndigital/OpenLang

vizualizarea datelor sonorecodepen.io/collection/nWRpzj/

Page 77: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Audio API

biblioteci JS:Amplitudejs

HowlerMidi.js

SoundManager2 Teoria

WaveSurfer

altele la www.javascripting.com/audio/?sort=rating

Page 78: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

aplicație Web demonstrativă:turtle.audio

Page 79: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web MIDI API

suport pentru protocolul MIDI (Musical Instrument Digital Interface) ce permite interacțiunea dintre

instrumente/dispozitive muzicale și navigatorul Web

în lucru la Consorțiul Web (18 octombrie 2018)webaudio.github.io/web-midi-api/

Page 80: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

bibliotecă pentru browser-ele ce nu oferă suport (polyfill): WebMIDIAPIShim – github.com/cwilso/WebMIDIAPIShim

Page 81: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Recunoașterea & generarea vorbirii

specificații neoficiale:Speech Recognition API

Speech Synthesis API

resurse pentru studiu:www.smashingmagazine.com/2017/02/experimenting-with-speechsynthesis/

developer.mozilla.org/Web/API/Web_Speech_API/Using_the_Web_Speech_API

Page 82: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Recunoașterea vorbirii

suportul cumulat oferit de navigatoarele Web actualecaniuse.com/#search=speech

exemplificări – dependente de browser:www.audero.it/demo/web-speech-api-demo.html

zenorocha.github.io/voice-elements/

Page 83: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

(în loc de) pauză

Page 84: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Există API-uri vizând interacțiunea cu mediul în care rulează browser-ul Web?

Page 85: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

definește maniera generică a interacțiunii cu senzori și de preluare a datelor de la aceștia

W3C Editor’s Draft (26 noiembrie 2018)w3c.github.io/sensors/

Page 86: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

senzor fizic = măsoară anumite cantități fizice și oferă date neprelucrate (raw sensor readings) privind un aspect

specific utilizatorului sau mediului înconjurător

fiecare informație oferită (observație) are o valoare + timpul determinării acelei valori – reading timestamp

Page 87: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

senzor fizic = măsoară anumite cantități fizice și oferă date neprelucrate (raw sensor readings) privind un aspect

specific utilizatorului sau mediului înconjurător

fiecare informație oferită (observație) are o valoare + timpul determinării acelei valori – reading timestamp

discrepanțele cunoscute între datele colectate și valoarea reală ce trebuie măsurată sunt corectate prin calibrare

Page 88: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

senzorii pot fi:

de nivel scăzut (low-level sensor type)

caracterizați de implementarea reală

exemplu: giroscop

Page 89: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

senzorii pot fi:

de nivel superior (high-level sensor type)

numiți după datele preluate

exemplificare: geolocalizator(maniera prin care sunt calculate datele expuse nu este

necesar a fi cunoscută și poate depinde de anumiți factori)

Page 90: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 91: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

[SecureContext, Exposed=Window]

interface Sensor : EventTarget {

readonly attribute boolean activated;

readonly attribute boolean hasReading;

readonly attribute DOMHighResTimeStamp? timestamp;

void start ();

void stop ();

attribute EventHandler onreading;

attribute EventHandler onactivate;

attribute EventHandler onerror;

};

dictionary SensorOptions {

double frequency;

};

Page 92: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Generic Sensor API

ciclul de viață al unui senzor

Page 93: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Senzori vizând mediul înconjurător

lumină ambientală (W3C Candidate Rec., martie 2018):Ambient Light Sensor – www.w3.org/TR/ambient-light/

nivelul de luminozitate e dat de proprietatea illuminance

cu valori numerice în lucși

Page 94: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 95: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Senzori vizând mediul înconjurător

proximitate (ciornă, 1 martie 2018):Proximity Sensor – w3c.github.io/proximity/

[Constructor (optional SensorOptions sensorOptions),

SecureContext, Exposed=Window]

interface ProximitySensor : Sensor {

readonly attribute double? distance;

readonly attribute double? max;

readonly attribute boolean? near;

};

Page 96: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Senzori vizând mediul înconjurător

Proximity Sensor

// șablon de utilizare

let senzor = new ProximitySensor ();

senzor.start ();

// la apariția datelor, scriem la consolă distanța

senzor.onreading = () => console.log (senzor.distance);

// semnalăm posibilele erori

senzor.onerror = ev => console.log (ev.error.name, ev.error.message);

senzor.stop ();

Page 97: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 98: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Senzori de mișcareîn lucru la W3C (martie 2018)

de nivel scăzut:accelerometru – w3c.github.io/accelerometer/

giroscop – w3c.github.io/gyroscope/

magnetometru – w3c.github.io/magnetometer/

detalii în Motion Sensors Explainer (august 2017)www.w3.org/TR/motion-sensors/

Page 99: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Senzori de mișcarede nivel superior:

Tip de senzor Senzori fizici folosiți

Relative Orientation Sensor Accelerometer, Gyroscope

Absolute Orientation Sensor Accelerometer, Magnetometer, Gyroscope

Geomagnetic Orientation Sensor Accelerometer, Magnetometer

Gravity Sensor Accelerometer, Gyroscope

Linear Acceleration Sensor Accelerometer, Gyroscope, Magnetometer

specificații în lucru

Page 100: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Orientation Sensor

tratează modificarea orientării dispozitivuluiîn spațiul 3D cartezian

W3C Candidate Recommendation (20 martie 2018) www.w3.org/TR/orientation-sensor/

înlocuiește DeviceOrientation Event Specificationimplementată diferit de fiecare navigator Web

Page 101: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

// tipul matrice de rotație

typedef (Float32Array or Float64Array or DOMMatrix) RotationMatrixType;

[SecureContext, Exposed=Window]

interface OrientationSensor : Sensor {

// 4 componente vizând orientarea dispozitivului

readonly attribute FrozenArray<double>? quaternion;

void populateMatrix(RotationMatrixType targetMatrix);

};

// sistemul local de coordonate poate fi dat de dispozitiv ori ecran

enum OrientationSensorLocalCoordinateSystem { "device", "screen" };

dictionary OrientationSensorOptions : SensorOptions {

OrientationSensorLocalCoordinateSystem referenceFrame = "device";

};

Page 102: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

tutoriale, inclusiv exemplificări:developers.google.com/web/updates/2017/09/sensors-for-the-web

intel.github.io/generic-sensor-demos/

Page 103: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

The Screen Orientation API

specificația curentă vizând preluarea datelor despre tipul și unghiul orientării ecranului dispozitivului

W3C Working Draft (14 december 2018)www.w3.org/TR/screen-orientation/

Page 104: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

The Screen Orientation API

la interfața Screen – specifică CSSOM (CSS Object Model) –se include atributul orientation de tip ScreenOrientation

[Exposed=Window]

interface ScreenOrientation : EventTarget {

Promise<void> lock (OrientationLockType orientation);

void unlock ();

readonly attribute OrientationType type;

readonly attribute unsigned short angle;

attribute EventHandler onchange;

};

Page 105: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co// tipuri vizând orientarea ecranului

enum OrientationType {

"portrait-primary", "portrait-secondary",

"landscape-primary", "landscape-secondary"

};

// tipuri referitoare la blocarea orientării ecranului

enum OrientationLockType {

"any", "natural", "landscape", "portrait",

"portrait-primary", "portrait-secondary",

"landscape-primary", "landscape-secondary"

};

pentru amănunte, a se parcurge:developer.mozilla.org/Web/API/Screen/orientation

Page 106: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

The Screen Orientation API

var redă = function() {

console.log ("Tip orientare: " + screen.orientation.type);

console.log ("Unghi orientare: " + screen.orientation.angle);

}

// afișarea noii orientări la fiecare schimbare a acesteia

screen.orientation.addEventListener ("change", redă);

// …plus redarea stării inițiale la încărcarea documentului

window.onload = redă;

caz tipic la platforma de tip desktop

Page 107: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 108: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Presentation API

acces din browser la ecrane de prezentare a conținutului (presentation displays) – e.g., proiector, monitor video,

TV conectat prin rețea – atașate clientului prin fir (HDMI, DVI) sau fără fir (AirPlay, DLNA, Chromecast)

W3C Editor’s Draft (18 octombrie 2018)w3c.github.io/presentation-api/

developer.mozilla.org/Web/API/Presentation_API

Page 109: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Remote Playback API

privește redarea la distanță a conținutului multimediavia tehnologii de conectare cu/fără fir

extinde API-urile referitoare la conținut audio/video

în lucru (18 octombrie 2018)w3c.github.io/remote-playback/

Page 110: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Geolocation API

determinarea locației geografice a dispozitivului

recomandare a Consorțiului Web (2016)

www.w3.org/TR/geolocation-API/

Page 111: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

partial interface Navigator { // se include proprietatea la obiectul Navigator

readonly attribute Geolocation geolocation;

};

interface Geolocation {

// furnizează poziția geografică actuală

void getCurrentPosition (PositionCallback successCallback,

optional PositionErrorCallback errorCallback,

optional PositionOptions options);

// observă poziția curentă

long watchPosition (PositionCallback successCallback,

optional PositionErrorCallback errorCallback,

optional PositionOptions options);

// anulează observarea poziției geografice curente

void clearWatch (long watchId);

};

callback PositionCallback = void (Position position);

callback PositionErrorCallback = void (PositionError positionError);

Page 112: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

// informații despre poziția curentă + data observării acesteia

interface Position {

readonly attribute Coordinates coords;

readonly attribute DOMTimeStamp timestamp;

};

// coordonate geografice conform WGS84

interface Coordinates {

readonly attribute double latitude;

readonly attribute double longitude;

readonly attribute double? altitude;

readonly attribute double accuracy;

readonly attribute double? altitudeAccuracy;

readonly attribute double? heading;

readonly attribute double? speed;

};

Page 113: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

// opțiuni privind preluarea poziției geografice

dictionary PositionOptions {

// se dorește acuratețe maximă?

boolean enableHighAccuracy = false;

// timp-limită (în milisecunde); dacă e depășit, se emite eroarea TIMEOUT

[Clamp] unsigned long timeout = 0xFFFFFFFF;

// programul poate accepta o valoare din cache a poziției (0 = poziția actuală)

[Clamp] unsigned long maximumAge = 0;

};

// erori raportate

interface PositionError {

const unsigned short PERMISSION_DENIED = 1;

const unsigned short POSITION_UNAVAILABLE = 2;

const unsigned short TIMEOUT = 3;

readonly attribute unsigned short code;

readonly attribute DOMString message;

};

Page 114: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

navigator.geolocation.getCurrentPosition (

proceseazaDate, // funcție prelucrând datele privind poziția geografică

trateazaErori, // nu s-a putut determina localizarea

{ // diverși parametri de control

enableHighAccuracy: true,

timeout: 10000, // așteaptă max 10000 milisec. pentru a primi date

maximumAge: 8000 // preia din cache date privind poziția

} // dacă nu-s mai vechi de 8000 de milisecunde

);

function proceseazaDate (localizare) {

alert ('latitudine: ' + localizare.coords.latitude +

'longitudine: ' + localizare.coords.longitude);

}

a se folosi watchPosition()

pentru a prelua localizarea geografică în mod continuu

Page 115: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Geolocation API

observații:

informațiile vor fi furnizate doar dacă programul rulează într-un context „sigur” (HTTPS)

obținerea poziției geografice se realizează numai cu acordul utilizatorului

developer.mozilla.org/Web/API/Geolocation/Using_geolocation

Page 116: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemplu demonstrativ:html5demos.com/geo/

Page 117: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Beacon API

se referă la realizarea de cereri unidirecționale (one-way requests) pentru a obține date în mod asincron,

non-blocant, minimizând consumul de resurse

în lucru (17 octombrie 2018)w3c.github.io/beacon/

Page 118: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Beacon API

partial interface Navigator {

// transmite asincron date prin HTTP spre un server Web;

// întoarce true dacă browser-ul a plasat cu succes datele

// în coada de transfer

boolean sendBeacon (USVString url, optional BodyInit? data = null);

};

nu se oferă nicio funcție de tratare a răspunsului

developer.mozilla.org/Web/API/Navigator/sendBeacon

Page 119: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 120: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Push API

facilitează trimiterea spre aplicația disponibilă la client de mesaje via un serviciu de tip push

pe baza HTTP Push (RFC 8030)

aceste mesaje sunt livrate unui service workerrulând în aceeași origine cu cea a aplicației

W3C Working Draft (26 octombrie 2018)www.w3.org/TR/push-api/

Page 121: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

resurse + exemple:serviceworke.rs/web-push.html

developers.google.com/web/fundamentals/push-notifications/

Page 122: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Vibration API

permite efectuarea de vibrații la nivel de dispozitiv atunci când e necesar feedback tactil

W3C Recommendation (octombrie 2016)www.w3.org/TR/vibration/

Page 123: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Vibration API

interfața Navigator este extinsă cu metoda vibrate ()

// vibrează timp de 2000 de milisecunde

navigator.vibrate (2000);

// vibrează 50 milisecunde, așteaptă 200, apoi vibrează 100 milisecunde

navigator.vibrate ([50, 200, 100]);

// oprește orice acțiune de vibrare

navigator.vibrate (0);

de studiat și developer.mozilla.org/Web/API/Vibration_API

Page 124: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

tutorial:code.tutsplus.com/tutorials/html5-vibration-api--mobile-22585

Page 125: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Battery Status API

manieră standardizată de a obține informații referitoare la starea bateriei dispozitivului gazdă

W3C Editor’s Draft (17 octombrie 2018)w3c.github.io/battery/

Page 126: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

partial interface Navigator {

Promise<BatteryManager> getBattery();

};

[Exposed=Window]

interface BatteryManager : EventTarget {

readonly attribute boolean charging;

readonly attribute unrestricted double chargingTime;

readonly attribute unrestricted double dischargingTime;

readonly attribute double level;

attribute EventHandler onchargingchange;

attribute EventHandler onchargingtimechange;

attribute EventHandler ondischargingtimechange;

attribute EventHandler onlevelchange;

};

Page 127: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 128: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Gamepad

vizează interconectarea cu dispozitive de tip gamepadvia USB (Universal Serial Bus)

W3C Working Draft (13 decembrie 2018)w3c.github.io/gamepad/

developer.mozilla.org/Web/API/Gamepad_API

Page 129: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Gamepad

interfețe: Gamepad

GamepadButton

GamepadEvent

evenimente: gamepadconnected

gamepaddisconnected

Page 130: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

resurse utile:developer.mozilla.org/Web/API/Gamepad_API/Using_the_Gamepad_API

html5gamepad.com

www.flightarcade.com/learn/gamepad

Page 131: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Gamepad

suplimentar, se descriu extensii oferind suport pentru interacțiuni mai avansate

(e.g., motion tracking, haptic feedback)

Gamepad Extensions (ciornă W3C, 13 decembrie 2018)w3c.github.io/gamepad/extensions.html

Page 132: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web ubicuu la nivel fizic – physical Web

dispozitiv fizic capabil să expună un URLe.g., prin Bluetooth pe baza Web Bluetooth API

github.com/WebBluetoothCG/web-bluetooth

scanner/browser = entitate ce scanează, recunoaște, procesează și prezintă un set de URL-uri

proxy = un serviciu Web (în „nori”) opțional cu rol de protejare a utilizatorului + îmbunătățire a performanței

Page 133: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web ubicuu la nivel fizic – physical Web

☁dispo-zitiv

☗difuzare

URL

client Web

analiză + optimizare

proxy

aplicație/serviciu Webprocesare resursă

extragere meta-date

diverse direcții de interes: automatizarea spațiilor de locuit (home automation),

industria auto (smart car), orașe „inteligente” (smart city),reclame contextuale (smart advertising)

🖼

Page 134: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

specificația Web Bluetooth API nu este oficială

resurse + exemple demonstrative:

google.github.io/physical-web/

Page 135: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

inițiativa neoficială WebUSB pentru comunicarea prin USB cu dispozitivele (în lucru, 17 decembrie 2018)

wicg.github.io/webusb/

Page 136: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Alte API-uri folositoare?

Page 137: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Payment Request API

specifică o manieră standard de efectuare a cererilor de plată direct din cadrul navigatorului Web

W3C Candidate Recommendation (30 august 2018)www.w3.org/TR/payment-request/

Page 138: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Payment Request API

procesul de a realiza o plată e modelat de interfața PaymentRequest

detaliile vizând plata sunt emise asincron via PaymentRequestUpdateEvent

răspunsul primit de la procesatorul plătii este specificat de interfața PaymentResponse

PaymentAddress – informații despre adresa poștală

Page 139: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Payment Request API

resurse de interes (tutoriale, exemple de cod, practici comune, ghiduri,…):

github.com/w3c/payment-request-info

biblioteci de tip polyfill:digitalbazaar.com/wp-polyfill/

Page 140: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

tutorial:developers.google.com/web/fundamentals/payments/

Page 141: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Payment Request API

specificații adiționale – în lucru:Payment Handler (17 octombrie 2018)

w3c.github.io/payment-handler/

Payment Method: Basic Card (21 noiembrie 2018)w3c.github.io/payment-method-basic-card/

Payment Method Manifest (12 decembrie 2017)w3c.github.io/payment-method-manifest/

Page 142: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Content Security Policy

a mechanism by which Web developers can control the resources which a particular page can fetch or execute

Page 143: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Content Security Policy

recomandare a Consorțiului Web (2016)www.w3.org/TR/CSP2/

noua versiune în lucru (27 decembrie 2018)w3c.github.io/webappsec-csp/

Page 144: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Content Security Policy

poate preveni atacuri – precum XSS (Cross-Site Scripting) –pe baza câmpului-antet HTTP Content-Security-Policy

pentru detalii + exemple, de studiat:content-security-policy.com

developers.google.com/web/fundamentals/security/csp/

developer.mozilla.org/Web/HTTP/CSP

Page 145: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Upgrade Insecure Requests

allows authors to instruct a user agent to upgrade a priori insecure resource requests to secure transport

before fetching them (de la transferuri de date via HTTP la HTTPS)

recomandare a Consorțiului Web (2015)www.w3.org/TR/upgrade-insecure-requests/

Page 146: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 147: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Tracking Preference Expression (DNT)

vizează acțiunea de user tracking (colectarea datelor despre utilizator, inclusiv platforma client a acestuia)

pe care o poate realiza un sit/aplicație Webwww.eff.org/issues/do-not-track

W3C Candidate Recommendation (19 octombrie 2017)www.w3.org/TR/tracking-dnt/

Page 148: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Tracking Preference Expression (DNT)

alături de câmpul-antet DNT dintr-un mesaj HTTP, se definește atributul doNotTrack

și se specifică modul în care se poate permite o operație de tip user tracking

developer.mozilla.org/Web/API/Navigator/doNotTrack

Page 149: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Referrer Policy

definește maniera de acces la valoarea câmpului Referer

din rațiuni de securitate, intimitate etc.

W3C Candidate Recommendation (26 ianuarie 2017)www.w3.org/TR/referrer-policy/

Page 150: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Referrer Policy

regulile de acces – valori "" "same-origin" "strict-origin"

"no-referrer" "no-referrer-when-downgrade" "unsafe-url" etc. –pot fi precizate în antetul HTTP (Referrer-Policy)

sau în cadrul documentului HTML cu atributul referrerpolicy

asociat elementelor <meta> <a> <img> <iframe> <link>

Page 151: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 152: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Web Cryptography API

permite efectuarea de operații criptografice, inclusiv generare/verificare de semnături, management de chei,

suport pentru tehnici criptografice actuale și altele

W3C Recommendation (2017)www.w3.org/TR/WebCryptoAPI/

cea mai recentă variantă la w3c.github.io/webcrypto/

Page 153: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 154: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 155: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Specificații vizând securitatea browser-ului

Web Authentication: An API for accessing Public Key Credentials

gestionează atribute vizând identitatea utilizatoruluipe baza cheilor publice în scopul autentificării acestuia

în lucru la Consorțiul Web (15 decembrie 2018)w3c.github.io/webauthn/

Page 156: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

utilizează criptografie asimetrică cu chei publice și autentificare multi-factor pentru managementul informațiilor de tip credentials– a se consulta și Credential Management API (în lucru, sep. 2018):

w3c.github.io/webappsec-credential-management/

Page 157: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

aplicații demonstrative:webauthn.bin.coffee

github.com/apowers313/webauthn-simple-app

Page 158: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Diverse biblioteci JS de interes vizând asigurarea securității la nivel de browser Web:

SJCL (Stanford Javascript Crypto Library)bitwiseshiftleft.github.io/sjcl/

jsSHA – a JS implementation of the SHA familycaligatio.github.io/jsSHA/

PKI.js – Public Key Infrastructure Managementpkijs.org

JS-XSS – sanitizes HTML to prevent Cross-Site Scriptingjsxss.com/en/

DOMPurity – a XSS sanitizer for HTML, MathML and SVGjsxss.com/en/

Page 159: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Permissionsspecificație în lucru la Consorțiul Web (octombrie 2018)

w3c.github.io/permissions/

tipuri de permisiuni stabilite/revocate de utilizator:geolocation notifications push camera microphone speaker

device-info background-fetch persistent-storage

ambient-light-sensor accelerometer clipboard display etc.

starea unei permisiuni – vezi PermissionStatus: granted, denied, prompt

Page 160: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemple:developer.mozilla.org/Web/API/Permissions_API/Using_the_Permissions_API

developers.google.com/web/updates/2015/04/permissions-api-for-the-web

Page 161: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Web Components

componente software rulate de navigatorul Web

concepute în ECMAScript și bazate pe HTML, CSS, DOM

împachetate și reutilizate în funcție de context

github.com/w3c/webcomponents/

Page 162: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Shadow tree (shadow DOM)

arbore DOM al cărui element rădăcină este un nod (shadow root) – specificat de interfața ShadowRoot

atașat întotdeauna unui arbore de noduri (nu poate exista de sine-stătător,

ci doar încapsulat de un document)

Page 163: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

shadow tree (shadow DOM)

descris în DOM Living Standard (11 decembrie 2018)dom.spec.whatwg.org/#shadow-trees

developer.mozilla.org/Web/Web_Components/Using_shadow_DOM

girliemac.com/presentation-slides/webcomponents/shadowdom.html

shadow root

shadowhost

shadowtree

Page 164: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Custom elements

elemente (marcaje) create de programator

incluse în arborele DOM prin extinderea interfeței HTMLElement

parte a specificației HTML5 Living Standardhtml.spec.whatwg.org/multipage/custom-elements.html

Page 165: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Custom elements

elementele noi sunt definite/accesate prin program via CustomElementRegistry

detalii + exemple:developer.mozilla.org/Web/API/CustomElementRegistry

Page 166: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemple:github.com/mdn/web-components-examples/

Page 167: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Templates (machete de prezentare)

<template> specifică o suită de marcaje HTML ce pot fi inserate într-un document cu scopul reutilizării

amănunte + exemple:html.spec.whatwg.org/multipage/scripting.html#the-template-element

Page 168: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 169: Dezvoltarea aplicațiilor Web la nivel de clientbusaco/teach/courses/... · Web Audio API definirea unui „ț ă : AudioContext AudioNode AudioParam BaseAudioContext. ga ...

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

episodul viitor: performanța aplicațiilor Web la nivel de client


Recommended