Reverse ajax

99
Reverse Ajax Something You Don’t Know About HTTP RDSS Team 2012-04 Monday, May 14, 12

description

 

Transcript of Reverse ajax

Page 1: Reverse ajax

Reverse AjaxSomething You Don’t Know About HTTP

RDSS Team2012-04

Monday, May 14, 12

Page 2: Reverse ajax

Author

澄净F2E & Translatorhttp://goddyzhao.me

Monday, May 14, 12

Page 3: Reverse ajax

About

RDSSResearch on Domain Specific Solution

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

Monday, May 14, 12

Page 4: Reverse ajax

Solutions

• HTTP Polling & JSONP Polling

• Piggyback

• Comet

• Bayeux(CometD)

• WebSockets

Monday, May 14, 12

Page 5: Reverse ajax

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 6: Reverse ajax

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Monday, May 14, 12

Page 7: Reverse ajax

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Monday, May 14, 12

Page 8: Reverse ajax

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Monday, May 14, 12

Page 9: Reverse ajax

HTTP PollingServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1(no data)

Ajax Requst #2

Response #2(no data)

Monday, May 14, 12

Page 10: Reverse ajax

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

Page 11: Reverse ajax

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

Page 12: Reverse ajax

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

Page 13: Reverse ajax

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

Page 14: Reverse ajax

HTTP Polling

Monday, May 14, 12

Page 15: Reverse ajax

HTTP Polling

Monday, May 14, 12

Page 16: Reverse ajax

HTTP PollingPros

Monday, May 14, 12

Page 17: Reverse ajax

HTTP PollingPros

Require no special features on server

Monday, May 14, 12

Page 18: Reverse ajax

HTTP PollingPros

Require no special features on server

Works in all browsers

Monday, May 14, 12

Page 19: Reverse ajax

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Monday, May 14, 12

Page 20: Reverse ajax

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Cons

Monday, May 14, 12

Page 21: Reverse ajax

HTTP PollingPros

Require no special features on server

Works in all browsers

Easy to implement in client

Cons Bandwidth consuming

Monday, May 14, 12

Page 22: Reverse ajax

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

Page 23: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 24: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Monday, May 14, 12

Page 25: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Monday, May 14, 12

Page 26: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Monday, May 14, 12

Page 27: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Monday, May 14, 12

Page 28: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Data/Event

Monday, May 14, 12

Page 29: Reverse ajax

PiggybackServerBrowser

Tim

eline

Tim

eline

Ajax Requst #1

Response #1

Ajax Requst #2

Response #2

Data/Event

Data/Event

Monday, May 14, 12

Page 30: Reverse ajax

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

Page 31: Reverse ajax

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

Page 32: Reverse ajax

Piggyback

Monday, May 14, 12

Page 33: Reverse ajax

Piggyback

Monday, May 14, 12

Page 34: Reverse ajax

PiggybackPros

Monday, May 14, 12

Page 35: Reverse ajax

PiggybackPros

Less resources consumption

Monday, May 14, 12

Page 36: Reverse ajax

PiggybackPros

Less resources consumption

Works in all browsers

Monday, May 14, 12

Page 37: Reverse ajax

PiggybackPros

Less resources consumption

Works in all browsers

No special requirements on server side

Monday, May 14, 12

Page 38: Reverse ajax

PiggybackPros

Less resources consumption

Works in all browsers

No special requirements on server side

Cons

Monday, May 14, 12

Page 39: Reverse ajax

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

Page 40: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 41: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Monday, May 14, 12

Page 42: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Monday, May 14, 12

Page 43: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Data/Event

Monday, May 14, 12

Page 44: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response

Request is suspended

Data/Event

Monday, May 14, 12

Page 45: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Request is suspended

Data/Event

Monday, May 14, 12

Page 46: Reverse ajax

Comet:http streamingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

ResponseData/Event

Data/Event

Request is suspended

Data/Event

Monday, May 14, 12

Page 47: Reverse ajax

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

Page 48: Reverse ajax

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

Page 49: Reverse ajax

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

Page 50: Reverse ajax

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

Page 51: Reverse ajax

Comet:http streaming

Monday, May 14, 12

Page 52: Reverse ajax

Comet:http streaming

Forever Iframe

Monday, May 14, 12

Page 53: Reverse ajax

Comet:http streaming

Forever Iframe

Monday, May 14, 12

Page 54: Reverse ajax

Comet:http streaming

Forever Iframe

Multipart xhr (multipart/x-mixed-replace)

Monday, May 14, 12

Page 55: Reverse ajax

Comet:http streaming

Forever Iframe

Multipart xhr (multipart/x-mixed-replace)

Monday, May 14, 12

Page 56: Reverse ajax

Comet:http streaming

Monday, May 14, 12

Page 57: Reverse ajax

Pros

Comet:http streaming

Monday, May 14, 12

Page 58: Reverse ajax

Pros Save the most bandwidth usage

Comet:http streaming

Monday, May 14, 12

Page 59: Reverse ajax

Pros Save the most bandwidth usage

Easy to implement(FI)

Comet:http streaming

Monday, May 14, 12

Page 60: Reverse ajax

Pros Save the most bandwidth usage

Easy to implement(FI)

Cons

Comet:http streaming

Monday, May 14, 12

Page 61: Reverse ajax

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

Page 62: Reverse ajax

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

Page 63: Reverse ajax

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

Page 64: Reverse ajax

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 65: Reverse ajax

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Monday, May 14, 12

Page 66: Reverse ajax

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Monday, May 14, 12

Page 67: Reverse ajax

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1 Request is suspended

Data/Event

Monday, May 14, 12

Page 68: Reverse ajax

Comet:Http Long PollingServerBrowser

Tim

eline

Tim

eline

Long-lived Request #1

Response(#1 Completed)

Request is suspended

Data/Event

Monday, May 14, 12

Page 69: Reverse ajax

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

Page 70: Reverse ajax

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

Page 71: Reverse ajax

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

Page 72: Reverse ajax

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

Page 73: Reverse ajax

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

Page 74: Reverse ajax

Comet:Http Long Polling

Monday, May 14, 12

Page 75: Reverse ajax

Script Tags

Comet:Http Long Polling

Monday, May 14, 12

Page 76: Reverse ajax

Script Tags

Comet:Http Long Polling

Pros

Monday, May 14, 12

Page 77: Reverse ajax

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Monday, May 14, 12

Page 78: Reverse ajax

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Monday, May 14, 12

Page 79: Reverse ajax

Script Tags

Comet:Http Long Polling

Pros No Cross-Domain Messaging Issue

Easy to implement

Cons

Monday, May 14, 12

Page 80: Reverse ajax

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

Page 81: Reverse ajax

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

Page 82: Reverse ajax

Comet:Http Long Polling

Monday, May 14, 12

Page 83: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

Page 84: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

Page 85: Reverse ajax

Comet:Http Long Polling

Monday, May 14, 12

Page 86: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Monday, May 14, 12

Page 87: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Pros

Monday, May 14, 12

Page 88: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Monday, May 14, 12

Page 89: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Monday, May 14, 12

Page 90: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Supported by all the browsers

Monday, May 14, 12

Page 91: Reverse ajax

XMLHttpRequest

Comet:Http Long Polling

Pros Can implement good error handling

Easy to implement

Cons

Supported by all the browsers

Monday, May 14, 12

Page 92: Reverse ajax

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

Page 93: Reverse ajax

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

Page 94: Reverse ajax

Bayeux

Just a protocol based on http

Monday, May 14, 12

Page 95: Reverse ajax

WebSocketsServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 96: Reverse ajax

WebSocketsServerBrowser

Tim

eline

Tim

eline

Monday, May 14, 12

Page 97: Reverse ajax

WebSockets

Monday, May 14, 12

Page 98: Reverse ajax

WebSockets

WebSockets enables bi-direction, full-duplex communication

channel like tcp sockets

Monday, May 14, 12

Page 99: Reverse ajax

Thanks!

Monday, May 14, 12