88
HTML 5 Eleonora Ciceri [email protected]

HTML5 - An introduction

Embed Size (px)

Citation preview

Page 1: HTML5 - An introduction

HTML 5 Eleonora Ciceri

[email protected]

Page 2: HTML5 - An introduction

Web Applications An introduction

Page 3: HTML5 - An introduction

Web Application architecture

Client Executes the requests; receive the responses

Web Server Delivers Web content that can be accessed through the Internet

Application Server Executes efficiently procedures (programs, routines, scripts) for supporting its applied applications

Database Organized collection of data, organized to model relevant aspects of reality

Page 4: HTML5 - An introduction

Web Application Standards: HTTP

!  HTTP stands for HyperText Transfer Protocol !  “Application-level networking protocol for the exchange of

multimedia documents”

!  HTTP is a request-response protocol in the client-server computing model

!  HTTP defines the format of !  Resources identification (URL)

!  Requests

!  Responses

Page 5: HTML5 - An introduction

Web Application Standards: HTML (1)

!  HTML stands for HyperText Markup Language !  “A markup language used to describe the content and the

structure of an hypertext”

!  First publicly available document: 1991, Tim Berners Lee

!  Key components !  Elements and attributes

!  Data types (character-based)

!  Character references and entity references

Page 6: HTML5 - An introduction

Web Application Standards: HTML (2)

<html>!<head>!!<title>The document title</title>!

</head>!<body>!!<h1>Main heading</h1>!!<p>A paragraph</p>!!<ul>!

<li>A list item.</li>!<li>Another list item.</li>!

!</ul>!!<a href="http://www.w3schools.com/">A link</a>!

</body>!</html>

Page 7: HTML5 - An introduction

Web Browser

!  A web browser is an application able to: !  Access Internet (using the HTTP protocol) !  Request resources (identified by an URL) to Web servers

!  Interpret resources and send them back to the user

!  Receive input from the user, and send it to the server

Page 8: HTML5 - An introduction

HTML5 Introduction

Page 9: HTML5 - An introduction

Motivations

!  HTML in common use is a mixture of features introduced by: !  Various specifications

!  Software products (e.g., web browsers)

!  Common practice

!  Syntax errors in existing web documents

Page 10: HTML5 - An introduction

What is HTML5? (1)

!  HTML5 is a markup language for structuring and presenting content for the Web !  Fifth revision of the HTML standard

!  Aim: improve the language with support for the latest multimedia, while keeping it:

!  Easily readable by humans

!  Consistently understood by computers and devices

!  Objectives !  Introduce markup and APIs for complex web applications

!  Create cross-platform mobile applications

Page 11: HTML5 - An introduction

What is HTML5? (2)

!  HTML5 is more a movement than a unique, identifiable technology !  Standardization effort

!  New features

Semantics New tags

Power Browser as a programming platform (new JavaScript APIs)

Page 12: HTML5 - An introduction

Advantages of HTML5

!  HTML5 tags have implicit semantics !  Search engines know where to look

!  Advantages !  Increased expressiveness

!  Machine readability

!  Increased cross-browser compatibility

!  More advanced features delegated to the browser

!  More power to the client

!  More engaging user experience

Page 13: HTML5 - An introduction

HTML5 Page structure

Page 14: HTML5 - An introduction

New semantics / Structural elements

DocType

Root element

Character encoding

Link relations

New Semantic Elements in HTML5

<!DOCTYPE html>!<html lang="en">!

<head>!<meta charset="utf-8"/>!<title>My HTML 5 Page</title>!<link rel="stylesheet" type="text/css" href="style.css"/>!<link rel="alternate" type="..." />!

</head> !<body>!

<header>...</header> !<article>...</article>!...!

</body>!</html>

Page 15: HTML5 - An introduction

DocType

!  There are several doctypes (>70 pages!) that instruct browsers about the right rendering mode that has to be activated !  Quirks mode: technique used by some web browsers for the

sake of maintaining backward compatibility with web pages designed for older browsers

!  Standards mode: technique used by some web browsers for which they are strictly compliant with W3C and standards

HTML4 HTML5 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 String//EN” http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >!

<!DOCTYPE html>!

Page 16: HTML5 - An introduction

Root element

!  The root of an HTML page is always <html>!

HTML4 HTML5 <html xmlns:”http://www.w3.org/1999/xhtml” lang=“en” xml:lang=“en”>!

<html lang=“en”>!•  No need for namespaces (all the elements

are always in the HTML5 namespace) •  The lang attribute suffices to define the

language of the HTML5 page

Page 17: HTML5 - An introduction

Character encoding

!  Every piece of text in a computer is stored using a given character encoding !  The character encoding provides a mapping between what

the computer manages and what you see

HTML5 <meta charset=“utf-8”/>!

Page 18: HTML5 - An introduction

Link relations (1)

!  Link relations explain why a page points to another resource !  Typically specified by browsers and for browsers, blogging

platforms, search engines etc.

!  Types of link !  Link to a file containing CSS rules for the page

!  <link rel=“stylesheet” href=“file.css” type=“text/css”/>!

!  Link to the same content available in other formats !  <link rel=“alternate” href=“/feed/” type=“application/atom

+xml” title=“My Weblog feed”/>!

Page 19: HTML5 - An introduction

Link relations (2)

Link Meaning rel = “author”! Link information about the author of the page; it

can be a mailto: address

rel = “icon”! Link to associate a small icon with the page

rel = “license”! License term for the page’s content

rel = “nofollow”! The link is not endorsed by the original author or publisher of the page

rel = “pingback”! Link to specify the address of a pingback server; this is useful for authors to understand who is linking to (or referring) their articles

rel = “search”! The referenced document provides an interface for searching the document and its related resources

Page 20: HTML5 - An introduction

New semantic elements in HTML5 (1)

!  Goal: enrich HTML with semantics

!  Advantages !  Ease automatic analysis

!  Factorize best practices into a standard

HTML4 HTML5 <div id=“header”/>!<div id=“footer”/>!<div id=“navigation”/>!

One element for each semantic structure in the page

Page 21: HTML5 - An introduction

New semantic elements in HTML5 (2)

Page 22: HTML5 - An introduction

Headers

!  A header is a semantic element that defines !  The header of a content: <header>

!  A wrapper for two or more related heading elements: <hgroup>

<header>!<hgroup>!

<h1><a href=“#”>home</a></h1>!<h2><a href=“#”>blog</a></h1>!

</hgroup>!</header>!

Page 23: HTML5 - An introduction

Nav

!  The nav is a section of a page that links to other pages or to parts within the page !  Important for people with disabilities (accessible websites)

<nav>!!<ul>!

<li><a href=“#”>home</li>!<li><a href=“#”>blog</li>!<li><a href=“#”>gallery</li>!

</ul>!</nav>!

Page 24: HTML5 - An introduction

Article

!  The article is a self-contained composition in a document, page or application, independently distributable or reusable

<article>!!<header>!

<p class=“post-date”>October,22</p>!<h1><href=“#” rel=“bookmark” title=“link to the post”>Travel day</a></h1>!

</header>!Blah blah blah!

</article>!

Page 25: HTML5 - An introduction

Section

!  The section element represents a generic document or the application section !  Examples A blob of content that you could store as an

individual record in the database, a thematic grouping of content (chapters / sections in a page)

!  Typically used to group similar information

Page 26: HTML5 - An introduction

Aside

!  The aside tag is used for the content that is tangentially related to the page content and that is surrounding it !  Examples related reading links, glossaries, etc

!  It can be used also to hold secondary content (when not nested within an article element)

<aside>!!<h1>Glossary</h1>!!...!

</aside>!

Page 27: HTML5 - An introduction

Footer

!  The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element !  It contains information about the section !  When footer elements contains sections, they represent appendixes,

license agreements etc. !  It may also contain navigation elements

<footer>!!<nav>!

<h1>Navigation>!<ul>...</ul>!

</nav>!<section>!

...!</section>!

</footer>!

Page 28: HTML5 - An introduction

HTML5 New elements

Page 29: HTML5 - An introduction

Schematic structure of a blog post

<article>

Article text

Page 30: HTML5 - An introduction

Transcription in HTML5

<article>!<header>!

<h2>Memoirs of a Parisian lion-tamer</h2>!<time datetime=2010-01-24>January 24th, 2010</time>!

</header>!<p>Claude Bottom’s poignant autobiography is this summer’s must-read.</p>!<footer>!

Posted in <a href=“/?cat=3”>Books category</a>.!<a href=“/?p=34#respond”>No comments</a>!

</footer>!</article>!

Page 31: HTML5 - An introduction

The <time> element

!  The time element is used for unambiguously encoding dates and times for machines, while still displaying them in a human-readable way

!  This element represents either a time on a 24-hour clock, or a precise date in the Gregorian calendar, optionally with a time and a time-zone offset

!  Parts !  A machine-readable timestamp !  Human-readable text content !  An optional pubdate attribute

!  If the time element is an article: timestamp of the article !  Otherwise: timestamp of the entire document

Page 32: HTML5 - An introduction

The <address> element

!  The address element is for contact details of the author !  This is not a generic element for postal addresses

!  You can have multiple addresses in a document, one inside each <article>!!  Each blog post has its address

!  Each comment to that post has its address

Code <address>!

<img src="QRcode.png">!<a href="#">Eleonora Ciceri</a>!

</address>

Page 33: HTML5 - An introduction

The <figure> element

!  The figure element wraps: !  An image (or a video, or block of code, or a supporting

quotation)

!  Its caption

Code <figure>!

<img src="Welcome.jpg" width="100px">!<figcaption>Welcome</figcaption>!

</figure>

Page 34: HTML5 - An introduction

The <details> element

!  The details element introduces native support for a common behavior: an expanding/collapsing area !  It removes the need for custom JavaScript

Code

<details>!<summary>Photograph details</summary>!<p>Photograph taken on!

<time datetime=2012-12-25>Xmas day 12</time>!</p>!<p><small>Copyright Eleonora Ciceri, !

<address>[email protected]</address>!</small></p>!

</details>

Page 35: HTML5 - An introduction

The <mark> element

!  The mark element allows you to do the markup equivalent of using a highlighter pen to bring out some words on a printed page !  This is not the same as emphasis (for this, you use <em>)

Code This is a <mark>marked</mark> text.

Page 36: HTML5 - An introduction

The <progress> element

!  The progress element is used to represent a progress meter, to indicate the completion of a task

!  The meter element works in the same way

Code <progress value="5" max="20"></progress>

Page 37: HTML5 - An introduction

Redefined element (1)

!  <cite>: user for mark up a work or the name of a speaker

!  <dl>: an association list consisting of zero or more name-value groups; name-value groups may be terms and definitions, metadata topics and values, or any other

!  <em>: it marks up emphasis of the kind that subtly changes the meaning of a sentence

!  <i>: it represents a span of text in an alternate voice or mood

Page 38: HTML5 - An introduction

Redefined element (2)

!  <small>: it represents “small print” rather than “a generic text with smaller font”; this characterizes disclaimers, legal restrictions, copyrights

!  <strong>: it represents strong importance for its contents, but, unlike <em>, it does not change the meaning of the sentence

Page 39: HTML5 - An introduction

Removed elements

!  Completely obsolete elements: !  <applet>!!  <big>!!  <blink>!!  <center>!!  <font>!!  <marquee>!

Page 40: HTML5 - An introduction

HTML5 Forms

Page 41: HTML5 - An introduction

New input types (1)

!  The new form fields were the genesis of the spec that became HTML5

!  New values to the type attribute of the input element are added !  New browsers understand them and render them in a proper

way !  Old browsers degrade these new types in the default type:

!  <input type=“text”>!

!  New types: email, url, time, datetime (i.e., date + time), search, tel (i.e., telephone number)

Page 42: HTML5 - An introduction

New input types (2)

!  Other fancy types

range

color

date

Page 43: HTML5 - An introduction

!  The list attribute creates a list in the input box !  Note: inserting a <select> tag is required for guaranteeing

compatibility with older browsers; HTML5 does not require it

New attributes: list!

Code <datalist id="sources">!

<select name="source” ! !!<option value="Value1">Value1</option>!!<option value="Value2">Value2</option>!

</select>!If other, specify:!

</datalist>!<input id="source" name="source" list="sources">

Page 44: HTML5 - An introduction

!  This attribute provides a declarative way to focus a form control when a page is loaded !  Previously written in JavaScript by web developers (at hand)

!  There should be only one autofocused input box in a page

New attributes: autofocus!

Code <input id=”input" name=”default" autofocus>

Page 45: HTML5 - An introduction

!  This attribute places text in an input field as a hint for the user: !  Removing the text when the user focuses on the field !  Restoring it when focus leaves the field

!  Previously written in JavaScript by web developers (at hand)

New attributes: placeholder!

Code <input name="q" placeholder="Search Bookmarks"/>

Page 46: HTML5 - An introduction

Other attributes (1)

!  required: on textarea and most input fields; it reports an error if the user does not compile it

!  multiple: user when the type is equal to file; it allows to user to upload multiple files

!  pattern: allows you to specify a custom regular expression that the input must match

!  autocomplete: controls the autocomplete behavior that some browsers apply to the input text

Page 47: HTML5 - An introduction

Other attributes (2)

!  min and max: applied to a number field, it gives the range of values that can be entered in an input

!  step: controls the level of granularity of input; e.g., if the step is 5, the spinner increments in steps of 5

spinner

Page 48: HTML5 - An introduction

Usefulness of new types (1)

!  HTML5 does not mandate any specific UI for new input types, but for instance:

!  Advantages: automatic input validation

Page 49: HTML5 - An introduction

Usefulness of new types (1)

!  HTML5 does not mandate any specific UI for new input types, but for instance:

!  Advantages: automatic input validation

Page 50: HTML5 - An introduction

Usefulness of new types (2)

!  The automatic input validation was usually performed !  Server-side

!  Client-side with JavaScript

!  Disadvantages !  Cost of additional scripts

!  JavaScript may be disabled in the user browser

!  HTML5 offloads the functionality for standard types to the browser !  Advantage: no additional scripts

Page 51: HTML5 - An introduction

HTML5 Canvas

Page 52: HTML5 - An introduction

The <canvas> element

!  The canvas is a resolution-dependent bitmap canvas that can be used for rendering graphs, game graphics or other visual images on the fly !  Empty rectangle in a page in which one can use JavaScript

to draw everything

!  It has no content and no border of its own

<canvas id=“myCanvas” width=“300” height=“225”/><canvas>!

!  The canvas can accessed by JavaScript: var myCanvas = document.getElementById(“myCanvas”);!

Page 53: HTML5 - An introduction

Draw shapes

!  How to draw a shape !  Get a reference to the element

!  Get a reference to the canvas drawing context (2D or 3D)

!  Draw

Code var myCanvas = document.getElementById(“myCanvas”);!var myCanvasContext = myCanvas.getContext(“2d”);!myCanvasContext.<DRAWING_PRIMITIVE>;

Page 54: HTML5 - An introduction

Canvas coordinates

!  The canvas is a two-dimensional grid, with origin (0,0) in the upper-left corner

Page 55: HTML5 - An introduction

Drawing script (1)

function drawOnCanvas() {!!var c = document.getElementById("myCanvas");!!var context = c.getContext("2d");!! ! ! !!!drawGrid(context);!!drawArrows(context);!!drawLabels(context);!

};

Retrieve the canvas and its 2D context

Page 56: HTML5 - An introduction

Drawing script (2)

function drawGrid(context) {!try {!

for (var x=0.5; x<500;x+=10) {!context.moveTo(x, 0);!context.lineTo(x, 375);!

}!for (var y=0.5; y < 375; y+=10) {!

context.moveTo(0, y);!context.lineTo(500, y);!

}!context.strokeStyle = "#eee";!context.stroke();!

}!catch (err) {}!

} Draw the required lines on the canvas

Starting point

Ending point

Page 57: HTML5 - An introduction

Drawing script (3)

function drawLabels(context) {!try {!

context.font = "bold 12px sans-serif";!context.fillText("x", 248, 43);!context.fillText("y", 58, 165);!

}!catch (err) {}!

! ! ! !!try {!

context.textBaseline = "top";!context.fillText("(0,0)",8,5);!

}!catch (err) {}!

! ! ! !!try {!

context.textAlign = "right";!context.textBaseline = "bottom";!context.fillText("(500,375)", 492, 370);!

}!catch (err) {}!

}

Write a text on the canvas at the specified position

Vertical alignment (wrt the position specified in fillText)

Horizontal alignment (wrt the position specified in fillText)

Page 58: HTML5 - An introduction

Drawing script (4)

function drawArrows(context) {!try {!

context.beginPath();!context.moveTo(0, 40); context.lineTo(240,40);!context.moveTo(260, 40); context.lineTo(500, 40);!context.moveTo(495, 35); context.lineTo(500, 40);!context.lineTo(495, 45);!! ! ! ! !!context.moveTo(60, 0); context.lineTo(60,150);!context.moveTo(60, 170); context.lineTo(60, 370);!context.moveTo(55, 365); context.lineTo(60, 370);!context.lineTo(65, 365);!! ! ! ! !!context.strokeStyle = "#000";!context.stroke();!

}!catch (err) {}!

}

Draw an arrow

Start drawing a line

Page 59: HTML5 - An introduction

Other features

!  A gradient is a smooth transition between two or more colors !  createLinearGradient paints along a line

!  createRadialGradient paints along a cone between two circles

!  The canvas drawing context allows the drawing of an image in the canvas !  drawImage takes an image, clips it to the specified

rectangle, scales it to the specified dimensions and draws it at specified coordinates

Page 60: HTML5 - An introduction

HTML5 Video embedding

Page 61: HTML5 - An introduction

The <video> element

<video width=“320” height=“240” controls autoplay preload poster=“star.png”> <source src=“v1.mp4” type=‘video/mp4; codecs=“mp4a.40.2”’>

</video>

Video size

Show video control commands Play the video as

the page loads

Start downloading as the page loads

Image to be shown while video loading

Define video source

Codec/Container IE FF Safari Chrome Opera iPhone Android

Theora/Vorbis/Ogg

3.5+ (extra plugin)

5.0 10.5+

H264+AAC+MP4 3.0+ 5.0 (to drop)

3.0+ 2.0+

WebM (extra plugin)

6.0 10.6+

Page 62: HTML5 - An introduction

Video and HTML/JavaScript

!  The video is not treated as an embedded foreign object !  Focus is on the player

!  Native JavaScript interaction

!  Interaction with other HTML5 primitives

!  Interactions with JavaScript !  Event binding: video.addEventListener!!  Control through API: onclick play, onclick load, onclick

pause, onclick

Page 63: HTML5 - An introduction

Video and CSS

!  The <video> tag can be styled using traditional CSS !  Border

!  Opacity

!  …

!  Other properties are from the newer CSS3: reflections, masks, gradients, transforms, transitions, animations

Page 64: HTML5 - An introduction

Video and canvas

!  <video> and <canvas> were designed to work together

!  <canvas> has a drawImage method which lets you import images from three different sources !  Image elements !  Another canvas element !  A video element: every time the method is invoked, the

current frame in the video is imported and rendered into the canvas

!  A nice example !  http://html5doctor.com/video-canvas-magic/!

Page 65: HTML5 - An introduction

HTML5 APIs

Page 66: HTML5 - An introduction

What is an API?

!  An Application Programming Interface is a collection of programming instructions and standards for accessing a software application

!  The HTML5 movement wants to standardize several functionalities that have been introduced over the years !  Interaction with local device

!  Multi-threading

!  Storage

!  Media interaction

Page 67: HTML5 - An introduction

Geo-location API

!  Geo-location: finding the geographical location of a user. This is done by analyzing: !  IP address

!  GPS coordinates

!  Wi-Fi hotspot coordinates

!  Why geo-location? !  Customized services

!  Social networks

!  Advertising

Page 68: HTML5 - An introduction

Geo-location API: Features (1)

!  Geo-location option has two methods !  getCurrentPosition: returns the current position of the

user

!  watchPosition: called every time the user’s location changes

!  There is no need to actively poll the devices’ position

!  The device will determine the optimal polling interval and it will call the callback function whenever it determines that the user’s position has changed

Page 69: HTML5 - An introduction

Geo-location API: Features (2)

!  The position object provides the position of the device, which is defined by latitude and longitude !  The timestamp is retrieved too

!  Altitude, accuracy and altitude accuracy may be retrieved too, although they are optional

!  The heading and the speed may be retrieved, since they can be computed by the device

Page 70: HTML5 - An introduction

Geo-location API: Features (3)

!  Quality constraints can be defined for the position !  enableHighAccuracy specifies if the location has to be

precise, i.e., collected by the GPS

!  timeout specifies the number of ms the application will wait in order to get the postion

!  maximumAge allows the device to answer immediately with a cached position

Page 71: HTML5 - An introduction

Geo-location API: Privacy concerns

!  Problem: Privacy concerns !  User agents must not send location information to Web sites

without the express permission of the user

!  Sharing your location must be optional

Page 72: HTML5 - An introduction

HTML5 storage: Previous solutions (1)

!  Desktop applications are able to manage and persist their state locally !  Where? Registry, INI files, plist files, XML files, database…

!  The only storage system available for Web clients were cookies !  Included in every HTTP session

!  Problems: security, performance

!  Limited to 4Kb of data

!  Possibly unavailable if cookies are disabled

Page 73: HTML5 - An introduction

HTML5 storage: Previous solutions (2)

!  Internet explorer !  User data: 64KB per domain in a XML-based structure

!  Flash !  Local Shared Objects: 100Kb of data per domain (but it

allows users to increase storage size)

!  Google Gears plugin !  Local Relations storage based on SQLlite: unlimited data,

SQL statement

Page 74: HTML5 - An introduction

HTML5 storage

!  A standard way for Web pages to store key/value pairs window.localStorage!

!  Data persists page navigation, user sessions and browser session

!  Limit of 5Mb for each origin !  No additional space

Page 75: HTML5 - An introduction

HTML5 storage: Usage

!  Data are stored as associative arrays based on named key !  Keys: strings

!  Data: any data type that is supported by JavaScript (strings, booleans, integers, floats), but they are stored as strings

!  Retrieving values require parsing to restore their original type

!  Objects are stored serializing them to JSON

Page 76: HTML5 - An introduction

HTML5 storage: Additional events

!  With HTML5 storage one can track changes to the data storage

!  storage is triggered when something changes

!  The StorageEvent object will contain the following properties !  key: string; the named key that was added, removed or

modified !  oldValue: any; the previous value, now overwritten, or null if a

new item was added !  url: string; the page which called a method that triggered this

change

Page 77: HTML5 - An introduction

Offline Web Applications: Motivations

!  Why do we need an offline Web application? !  Nomadic usage

!  Network usage

!  Network cost

!  What do we need when offline? !  HTML pages, CSS, JavaScripts

!  Images / videos

!  Local data

Page 78: HTML5 - An introduction

Offline Web Applications: Principles

!  Offline is enabled by !  Caching resources

!  Switching from cache to “live” resources (and viceversa) when needed

!  How does it work? !  A flag in the DOM tells the application whether you are

online or offline

!  A dedicated event fires when the status changes

!  The browser switches between online and offline when the status is changed

Page 79: HTML5 - An introduction

Offline Web Applications in HTML5 (1)

!  HTML4 !  Browsers typically implement an HTTP cache, which caches

HTTP responses based on HTTP methods and metadata

!  For an application to run offline, all needed resources must be reliably cached

!  HTML5 !  It works in the same way as the traditional browser caching

policy

!  It adds some additional explicit policies

Page 80: HTML5 - An introduction

Offline Web Applications in HTML5 (2)

!  The home page of the offline Web application points to the manifest file for the resources to cache !  There is only one manifest file !  All application pages must point to it

!  An HTML5 compliant browser will: !  Read the manifest file

!  Download the resources

!  Cache them locally

!  Automatically update changes

Page 81: HTML5 - An introduction

Offline Web Applications in HTML5 (2)

!  A manifest is divided in !  Cache: resources which are explicitly downloaded, cached

locally and used when online

!  Fallback: substitution for online resources that will not be cached

!  Network: an online list of resources that are never cached and are not available offline

!  If the manifest has no header, all the resources are implicitly in the cache section

Page 82: HTML5 - An introduction

Offline Web Applications in HTML5 (3)

!  If the manifest file is new, a downloading event is fired and the browser starts downloading resource !  The browser periodically notifies about the download progress !  When all the resources are downloaded, the browser sends an

event of type cached!

!  If the manifest file changed from a previous version, a new downloading event is fired and the browser starts downloading resource !  When the download is finished, the browser triggers an

updateready event !  The new cached resources won’t be used unless the user

refreshes the page

Page 83: HTML5 - An introduction

WebSocket: Motivations

!  HTTP is a request-response protocol

!  Problem: many applications need bi-directional communication !  Chat

!  Multiplayer online games

!  Realtime updating of social streams

!  Solution: COMET is an hack that provides server push using standard browser functionality !  Inefficient

Page 84: HTML5 - An introduction

WebSocket (1)

!  “WebSocket is a new proposal to provide full-duplex, bi-directional client-server interaction over a single TCP connection”

!  Special socket connections between a Web browser and the server are established !  An open connection between the client and the server can

start sending data at any time

!  Messages can be sent to a server so as to receive event-driven responses without having to poll the server for a reply

Page 85: HTML5 - An introduction

WebSocket (2)

!  Goals !  Enabling near real-time push communications !  Increasing web server connection scalability !  Simplifying the coding task

!  Protocol: ws:// and wss:// !  Its own protocol, handshake and headers

!  Support for several browsers (Firefox 6+, Chrome 14+, Opera 11+, Safari 5+, IE 10+)

!  Problem: security issues

Page 86: HTML5 - An introduction

References

Page 87: HTML5 - An introduction

References (1)

!  http://www.w3schools.com/html/html5_intro.asp

!  Introducing HTML 5, Second edition, Bruce Lawson, Remy Sharp

!  W3C HTML5 Introduction: http://www.w3.org/TR/html5/introduction.html

!  HTML 5 Up and Running – Mark Pilgrim, O’Reilly Google Press – or http://diveintohtml5.org/

!  HTML5 boilerplate - http://html5boilerplate.com/ - “collection of some tricks to get your project off the ground quickly and right-footed”

!  HTML5 Demos - http://html5demos.com/

Page 88: HTML5 - An introduction

References (2)

!  HTML5 Rocks - http://www.html5rocks.com/

!  http://slides.html5rocks.com/

!  HTML5 Video - http://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/

!  HTML5 Foundamentals - https://www.ibm.com/developerworks/mydeveloperworks/blogs/social-media-marketing/entry/html5_fundamentals?lang=en

!  HTML5 Tag Reference - http://www.w3schools.com/html5/html5_reference.asp