aboutsummaryrefslogtreecommitdiff
path: root/README
blob: fe421c0cf9a307fd2e9a3bc654bc3a38cdb0201e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
PollDance
---------
Date: January 28th, 2013
Authors: Justin Karneges <justin@fanout.io>
         Katsuyuki Ohmuro <harmony7@pex2.jp>

PollDance is a general purpose AJAX library, implementing multiple transports
to ensure cross-domain access works in all major browsers. It also provides
conveniences for long-polling applications such as retries, exponential
backoff between requests, and randomized request delaying.

Dependencies:

  json2.js

Available Transports:

  XmlHttpRequest - for all modern CORS browsers
  JSON-P - for IE7, IE8, IE9, and older versions of other browsers

Limitations:

  - If the JSON-P transport is used, the request headers and body are subject
    to URI length limitations of the browser and server.
  - If the JSON-P transport is used, it may not be possible to inspect all of
    the response headers. At most, the server may provide "noteworthy" headers
    within the JSON-P encoding.

Usage:

  var req = new PollDance.Request();
  req.on('finished', function(code, result) { ... });
  req.on('error', function(reason) { ... });
  var headers = { ... };
  var body = 'some data';
  req.start('POST', 'http://example.com/path', headers, body);

Non-JSON results:

  By default, this library will parse response body data as JSON and return an
  object to the application. Call setRawResponse(true) to disable this
  behavior and have a string returned instead.

Polling:

  Call setRequestAttempts(number) to enable multiple request attempts, with
  exponential backoff. Pass -1 to indicate infinite attempts. Transport
  errors or HTTP responses in the 5xx range will cause a retry to occur. Any
  other error will be returned to the application. Request objects may be
  reused. If reused, a random delay is inserted before starting the next
  request. By default this is a value between 0-1000ms. Call setMaxDelay(ms)
  to change the upper bound.

JSON-P Protocol:

  This library supports JSON-P by supplying the following query string
  parameters in the request:

  _callback: the JavaScript function to call in the response script
  _method: the method name (default GET)
  _headers: additional headers encoded as JSON (default none)
  _body: request body (default empty)

  This protocol dictates that the presence of the "callback" parameter
  signifies the request as a JSON-P request. The remaining parameters are
  optional.

  The server is expected to reply with a JSON object with fields:

  code: the HTTP response code
  status: the HTTP response status
  headers: any noteworthy HTTP response headers (default none)
  body: response body

  All fields are required except for "headers". Example response:

  {
    "code": 200,
    "status": "OK",
    "headers": {
      "Content-Type": "application/json"
    },
    "body": "{ \"foo\": \"bar\" }"
  }