Skip to content

Instantly share code, notes, and snippets.

@mattheworiordan
Last active October 1, 2019 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattheworiordan/2075749ef847b5ba6868ba5d84c08a45 to your computer and use it in GitHub Desktop.
Save mattheworiordan/2075749ef847b5ba6868ba5d84c08a45 to your computer and use it in GitHub Desktop.
Google's polling overhead for live scores vs other more suitable transports

In an article written by Matthew O'Riordan from Ably about how Google approaches live scoring updates embedded in their search results, the overhead of requests was captured and is available below.

HTTP Poll to Google's /async/torspo endpoint:
Request headers:
GET /async/torspo?ei=mxKGXZH9NMuigQbA146QBA&rlz=1C5CHFA_enGB842GB842&yv=3&async=emids:%2Fg%2F11fncqsd62,id:lu,ctx:%5B%5B%5B3%2C%22%2Fg%2F11c1nqd6hv%22%5D%0A%2C%5B2%5D%0A%2C%5B1%5D%0A%5D%0A%2Cnull%2C%5B%5B%22ev2%22%2C%22clb%22%2C%22tlb%22%2C%22tv%22%2C%22vac%22%2C%22gs2%22%5D%0A%5D%0A%2Cnull%2C1%2C%5B%5B%22tsp-lbb%22%5D%0A%5D%0A%5D%0A,ct:GB,hl:en,tz:Europe%2FLondon,_fmt:jspb HTTP/2
Host: www.google.com
sec-fetch-mode: cors
dnt: 1
accept-language: en-US,en;q=0.9
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
accept: */*
referer: https://www.google.com/
authority: www.google.com
cookie: CONSENT=YES+GB.en+20150705-15-0; _gcl_au={{{{{{{OBFUSCATED}}}}}}}}; SEARCH_SAMESITE=CgQI2I0B; OTZ={{{{{{{{{{OBFUSCATED}}}}}}}}}}; SID={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.; HSID={{{OBFUSCATED}}}}; SSID={{{OBFUSCATED}}}}; APISID={{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}; SAPISID={{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}; NID={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}; DV={{{{{{{{{{OBFUSCATED}}}}}}}}}}}; 1P_JAR=2019-9-21-12; SIDCC={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
sec-fetch-site: same-origin
x-client-data: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1,650 bytes
Response headers:
HTTP/2 200
version: 269308192
content-type: application/json; charset=UTF-8
x-content-type-options: nosniff
strict-transport-security: max-age=31536000
content-disposition: attachment; filename="f.txt"
date: Sat, 21 Sep 2019 12:30:10 GMT
server: gws
cache-control: private
x-xss-protection: 0
x-frame-options: SAMEORIGIN
set-cookie: SIDCC={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{OBFUSCATED}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}; expires=Fri, 20-Dec-2019 12:30:10 GMT; path=/; domain=.google.com; priority=high
alt-svc: quic=":443"; ma=2592000; v="46,43,39"
accept-ranges: none
vary: Accept-Encoding
expires: Sat, 21 Sep 2019 12:30:10 GMT
623 bytes
Total: 2,273 bytes per polling request
Example SSE overhead using Ably's SSE endpoint as an example - see https://www.ably.io/documentation/sse.
Request headers:
GET /sse?v=1.1&key=xVLyHw.HYcw1A:{{OBFUSCATED}}&channels=%5B%3Fdelta%3Dvcdiff%5Dlaver-cup-demo&enveloped=false HTTP/2
Host: realtime.ably.io
Accept: text/event-stream
Cache-Control: no-cache
Origin: https://jsbin.ably.io
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15
Pragma: no-cache
372 bytes
Response headers:
HTTP/2 200
content-type: text/event-stream
access-control-allow-credentials: true
access-control-allow-origin: https://jsbin.ably.io
access-control-expose-headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,Server
date: Fri, 27 Sep 2019 07:34:30 GMT
vary: Origin
x-ably-serverid: frontend.d64c.2.ap-southeast-1-A.i-0fb17ef079de64f3c
x-content-type-options: nosniff
x-cache: Miss from cloudfront
via: 1.1 d1ddb12f5f4b519f363fd0f9bd2bb074.cloudfront.net (CloudFront)
x-amz-cf-pop: JNB50
x-amz-cf-id: BnMt-6MLK6XOxPt70ZCOfASaiXyilvbmoe1-Fntn0VI3uVbJafp6eA==
602 bytes
Total: 974 bytes overhead in connection establishment
Per event overhead (with Ably using our message ID):
id: 108TO4AsgAcgsU:1569936907527-0
event: message
data: {{DATA_PAYLOAD}}
57 bytes per event
Example Websockets overhead using Ably's Websocket endpoint as an example - see https://www.ably.io/documentation/realtime.
Request headers:
GET /?key=xVLyHw.HYcw1A:{{OBFUSCATED}}&format=json&heartbeats=true&v=1.1&lib=js-web-1.1.18 HTTP/1.1
Host: realtime.ably.io
Accept: */*
Connection: Upgrade
Origin: https://jsbin.ably.io
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: oi112AifFJc40LWKxALc4w==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Upgrade: websocket
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15
498 bytes
Response headers:
HTTP/1.1 101 Switching Protocols
Date: Fri, 27 Sep 2019 07:41:19 GMT
Connection: upgrade
Sec-Websocket-Accept: 7ILtNBPeWYz9QK1GbxzCO2rCh2k=
Upgrade: websocket
X-Cache: Miss from cloudfront
Via: 1.1 ee640d6824be659aeb1aa940f153e4b3.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: JNB50
X-Amz-Cf-Id: lJ4l5pEf3GeycAWX8ylv119qGELLbDgjYZc65c6WY3I8zywd37eJHg==
348 bytes
Total: 846 bytes overhead in connection establishment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment