reverse ajax

Post on 15-Jan-2015

29.756 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Reverse AjaxSomething You Don’t Know About HTTP

RDSS Team2012-04

Monday, May 14, 12

Author

澄净F2E & Translatorhttp://goddyzhao.me

Monday, May 14, 12

About

RDSSResearch on Domain Specific Solution

We focus on existing specification, solution, production etc.We apply our research to practice.

Monday, May 14, 12

Solutions

• HTTP Polling & JSONP Polling

• Piggyback

• Comet

• Bayeux(CometD)

• WebSockets

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Data/Event

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Data/Event

Data/Event

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Ajax Requst #3

Data/Event

Data/Event

Monday, May 14, 12

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Ajax Requst #3

Response #3(with data)

Data/Event

Data/Event

Monday, May 14, 12

HTTP Polling

Monday, May 14, 12

HTTP Polling

Monday, May 14, 12

HTTP PollingPros

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Works in all browsers

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Cons

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Cons Bandwidth consuming

Monday, May 14, 12

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Cons Bandwidth consuming

Large amounts of useless requests

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Data/Event

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Data/Event

Data/Event

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Ajax Requst #3

Data/Event

Data/Event

Monday, May 14, 12

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Ajax Requst #3

Mixed Response #3(with data)

Data/Event

Data/Event

Monday, May 14, 12

Piggyback

Monday, May 14, 12

Piggyback

Monday, May 14, 12

PiggybackPros

Monday, May 14, 12

PiggybackPros

Less resources consumption

Monday, May 14, 12

PiggybackPros

Less resources consumption

Works in all browsers

Monday, May 14, 12

PiggybackPros

Less resources consumption

Works in all browsers

No special requirements on server side

Monday, May 14, 12

PiggybackPros

Less resources consumption

Works in all browsers

No special requirements on server side

Cons

Monday, May 14, 12

PiggybackPros

Less resources consumption

Works in all browsers

No special requirements on server side

Cons

Server still have to wait for the request even though the data/event has been arrived

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response

Request is suspended

Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Request is suspended

Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Response

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Response Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Response Data/Event

Data/Event

Monday, May 14, 12

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Response

Response

Data/Event

Data/Event

Monday, May 14, 12

Comet:http streaming

Monday, May 14, 12

Comet:http streaming

Forever Iframe

Monday, May 14, 12

Comet:http streaming

Forever Iframe

Monday, May 14, 12

Comet:http streaming

Forever Iframe

Multipart xhr (multipart/x-mixed-replace)

Monday, May 14, 12

Comet:http streaming

Forever Iframe

Multipart xhr (multipart/x-mixed-replace)

Monday, May 14, 12

Comet:http streaming

Monday, May 14, 12

Pros

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Easy to implement(FI)

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Easy to implement(FI)

Cons

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Easy to implement(FI)

Cons No way to implement error handling(FI)

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Easy to implement(FI)

Cons No way to implement error handling(FI)

Not supported by all the browsers(MX)

Comet:http streaming

Monday, May 14, 12

Pros Save the most bandwidth usage

Easy to implement(FI)

Cons No way to implement error handling(FI)

Not supported by all the browsers(MX)

Comet:http streaming

Supported all the browsers(FI)

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Data/Event

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Long-lived Request #2

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Long-lived Request #2

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Data/Event

Long-lived Request #2

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Data/Event

Data/Event

Long-lived Request #2

Monday, May 14, 12

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Response(#2 Completed)

Data/Event

Data/Event

Long-lived Request #2

Monday, May 14, 12

Comet:Http Long Polling

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Cons

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Cons No way to implement error handling(FI)

Monday, May 14, 12

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Cons No way to implement error handling(FI)

Supported by all the browsers

Monday, May 14, 12

Comet:Http Long Polling

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

Comet:Http Long Polling

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Supported by all the browsers

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Cons

Supported by all the browsers

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Cons No main disadvantages

Supported by all the browsers

Monday, May 14, 12

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Cons No main disadvantages

Supported by all the browsers

Monday, May 14, 12

Bayeux

Just a protocol based on http

Monday, May 14, 12

WebSocketsServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

WebSocketsServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

WebSockets

Monday, May 14, 12

WebSockets

WebSockets enables bi-direction, full-duplex communication

channel like tcp sockets

Monday, May 14, 12

Thanks!

Monday, May 14, 12

top related