Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 ·...

41
Networking & The Web HCID 520 User Interface Software & Technology

Transcript of Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 ·...

Page 1: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Networking & The Web

HCID 520 User Interface Software & Technology

Page 2: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1991 — HTTP v0.9

Uniform Resource Locator (URL)

http://info.cern.ch:80/

Page 3: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Uniform Resource Locator (URL)

Scheme/Protocol

http://info.cern.ch:80/

1991 — HTTP v0.9

Page 4: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Uniform Resource Locator (URL)

Scheme/Protocol

http://info.cern.ch:80/Host

1991 — HTTP v0.9

Page 5: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Uniform Resource Locator (URL)

Scheme/Protocol

http://info.cern.ch:80/Host

Port

1991 — HTTP v0.9

Page 6: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Uniform Resource Locator (URL)

Scheme/Protocol

http://info.cern.ch:80/Host

Port

Path

1991 — HTTP v0.9

Page 8: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1993 — WorldWideWeb, first graphical browserhttp://home.cern/topics/birth-web

Page 9: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1994 — Mosaic, commercialized as Netscapehttps://en.wikipedia.org/wiki/Mosaic_(web_browser)

Page 10: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQL

Go to URLRoute RequestProcess Data

Build ResponseSend Response

Get ResponseRender Page

Page 11: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Request

Response

Headers

Content

Page 12: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQL

Server Technologies Apache (basic server) Java Servlets PHP Ruby on Rails (Ruby) Django (Python) Node.js / JavaScript and many others…

Databases MySQL Postgres SQLite MongoDB and many others…

Page 13: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQLWhat about interactivity?

Page 14: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQLWhat about interactivity? In the early days, users could submit “forms”. The server would process the results and return a new page.

Page 15: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1994 — Mosaic, commercialized as Netscapehttps://en.wikipedia.org/wiki/Mosaic_(web_browser)

Page 16: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node
Page 17: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1995 – JavaScript created... in 10 days

Netscape Navigator

Internet Explorer

Page 18: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

1997 – DHTML & Proprietary DOMs

Netscape Navigator

Internet Explorer

Page 19: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

2000 – XMLHttpRequest

Netscape Navigator

Internet Explorer

Page 20: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Netscape Navigator

Internet Explorer

2001 – Internet Explorer 6

Page 21: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Firefox Internet Explorer

Firefox released – 2004 XMLHttpRequest standardized ("AJAX")

Page 22: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Firefox Chrome

Chrome released – 2008New Browser built on Webkit , V8, node

Page 23: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQL

Go to URLRoute RequestProcess Data

Build ResponseSend Response

Get ResponseRender Page

(HTML, CSS, etc.)

Page 24: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Browser

Web Server

Database

HTTP Request

HTTP Response

SQL

Go to URLRoute RequestProcess Data

Build ResponseSend Response

Get ResponseRender Page

(HTML, CSS, etc.)

Page 25: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Server

Database

HTTP Request

HTTP Response

SQL

Route RequestProcess Data

Build ResponseSend Response

(XML/JSON)

Java

Scrip

t

UI (

HTM

L)Call

Update

(XML/JSON)

Page 26: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

Server-Side Client-Side

Web Server

Database

HTTP Request

HTTP Response

SQL

Route RequestProcess Data

Build ResponseSend Response

(XML/JSON)

Java

Scrip

t

UI (

HTM

L)Call

Update

(XML/JSON)

Page 27: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)var xhr = new XMLHttpRequest();

Server-Side Client-Side

Web Server

Database

Java

Scrip

t

UI (H

TML)Call

Page 28: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)var xhr = new XMLHttpRequest();

// Make the request xhr.open("GET", "//api.github.com/users/vega/repos", true); xhr.send();

HTTP Method "GET", "POST",

"PUT", "DELETE", etc.

URL

Asynchronous? i.e., should execution

wait for xhr.send().

HTTP Post Content

"?sort=updated"

Server-Side Client-Side

Web Server

Database

HTTP Request

Java

Scrip

t

UI (H

TML)Call

Page 29: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)var xhr = new XMLHttpRequest();

// Handle the response xhr.onreadystatechange = function() {

};

// Make the request xhr.open("GET", "//api.github.com/users/vega/repos", true); xhr.send();

Server-Side Client-Side

Web Server

Database

HTTP Request

HTTP Response

SQL

Route RequestProcess Data

Build ResponseSend Response Ja

vaSc

ript

UI (H

TML)Call

Page 30: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)var xhr = new XMLHttpRequest();

// Handle the response xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) {

} };

// Make the request xhr.open("GET", "//api.github.com/users/vega/repos", true); xhr.send();

XHR operation complete. HTTP Status Code. 200 (OK)

Server-Side Client-Side

Web Server

Database

HTTP Request

HTTP Response

SQL

Route RequestProcess Data

Build ResponseSend Response Ja

vaSc

ript

UI (H

TML)Call

Page 31: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)var xhr = new XMLHttpRequest();

// Handle the response xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var response = JSON.parse(xhr.responseText); } };

// Make the request xhr.open("GET", "//api.github.com/users/vega/repos", true); xhr.send();

Server-Side Client-Side

Web Server

Database

HTTP Request

HTTP Response

SQL

Route RequestProcess Data

Build ResponseSend Response Ja

vaSc

ript

UI (H

TML)Call

Page 32: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

XMLHttpRequest (XHR)Libraries to the rescue! E.g., jQuery:$.get("url", function(text) {

});

$.getJSON("url", function(json) {

});

$.post("url", data, function() {

});

Page 33: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

JavaScript Object Notation (JSON)

Basic Types (Primitives)Boolean true falseNumber 0 1 5.6 0.3String "hello"No Value null

Advanced TypesObject {"key": value}Array [value, value, ...]

Page 34: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

JavaScript Object Notation (JSON)

[true, false, true, true, false]Array of booleans.

[5, 0.491, 80, 29.41, 3.14159]Array of numbers.

["whiskey", "tango", "foxtrot"] Array of string.

Page 35: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

JavaScript Object Notation (JSON)

{"fruit": "apples", "amount": 2} Object with two keys and a string and number value.

{"fruits": ["apples", "bananas"], "amount": 2} Object with an array and number value.

[{"fruit": "apples"}, 4, true, null] Array of values.

Page 36: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

What about interaction initiated by the server?

Page 37: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

https://brigetteheffernan.wordpress.com/category/illustrations/

Page 38: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

WebSocketsvar socket = new WebSocket("wss://echo.websocket.org");

New URL scheme for WebSockets. ws : http :: wss : https

Page 39: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

WebSocketsvar socket = new WebSocket("wss://echo.websocket.org");

// Send a message to the server socket.onopen = function() { socket.send("Hello"); };

Can be any JSON data types, including binary data (e.g., images).

Page 40: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

WebSocketsvar socket = new WebSocket("wss://echo.websocket.org");

// Send a message to the server socket.onopen = function() { socket.send("Hello"); };

// Receive messages from the server socket.onmessage = function(msg) { console.log(msg.data); };

Page 41: Networking & The Webuwdata.github.io/hcid520/17wi/lectures/09-NetworksWebDev.pdf · 2017-03-06 · Node.js / JavaScript and many others ... New Browser built on Webkit , V8, node

WebSocketsLibraries to the rescue (again!). E.g., socket.io:var socket = io(wss://echo.websocket.org");

socket.send("ant", mouseX, mouseY);

socket.on("ant", function(mouseX, mouseY) {

});