[{"data":1,"prerenderedAt":1672},["ShallowReactive",2],{"doc:ws/lifecycle":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":9,"tree":10},"ws/lifecycle","ws/lifecycle.md",{"title":7,"description":8},"Connection Lifecycle","Heartbeat, reconnection strategies, and best practices for WebSocket connections.","---\ntitle: Connection Lifecycle\ndescription: Heartbeat, reconnection strategies, and best practices for WebSocket connections.\n---\n\n# Connection Lifecycle\n\n## Heartbeat\n\nSend a ping every **30 seconds** to keep the connection alive:\n\n\u003CCodeBlock lang=\"Send\">\n\u003Cpre>{\n  \u003Cspan class=\"s-p\">\"type\"\u003C/span>: \u003Cspan class=\"s-s\">\"ping\"\u003C/span>,\n  \u003Cspan class=\"s-p\">\"timestamp\"\u003C/span>: \u003Cspan class=\"s-n\">1769056941234\u003C/span>\n}\u003C/pre>\n\u003C/CodeBlock>\n\nThe server responds with:\n\n\u003CCodeBlock lang=\"Receive\">\n\u003Cpre>{\n  \u003Cspan class=\"s-p\">\"type\"\u003C/span>: \u003Cspan class=\"s-s\">\"pong\"\u003C/span>,\n  \u003Cspan class=\"s-p\">\"timestamp\"\u003C/span>: \u003Cspan class=\"s-n\">1769056941234\u003C/span>\n}\u003C/pre>\n\u003C/CodeBlock>\n\nIf the server receives no ping within 60 seconds, it closes the connection.\n\n## Reconnection strategy\n\nNetwork disruptions are inevitable. Your client should handle disconnections gracefully with exponential backoff:\n1. On disconnect, wait a short initial delay (e.g., 1 second).\n2. On each failed reconnection attempt, double the delay up to a maximum (e.g., 30 seconds).\n3. Add random jitter to prevent thundering herd when many clients reconnect simultaneously.\n4. After reconnecting, re-authenticate and re-subscribe to all channels on that connection.\n\n\u003CCodeBlock lang=\"JavaScript\">\n\u003Cpre>\u003Cspan class=\"s-k\">const\u003C/span> \u003Cspan class=\"s-v\">BASE_DELAY\u003C/span> = \u003Cspan class=\"s-n\">1000\u003C/span>;\n\u003Cspan class=\"s-k\">const\u003C/span> \u003Cspan class=\"s-v\">MAX_DELAY\u003C/span> = \u003Cspan class=\"s-n\">30000\u003C/span>;\n\u003Cspan class=\"s-k\">let\u003C/span> \u003Cspan class=\"s-v\">attempt\u003C/span> = \u003Cspan class=\"s-n\">0\u003C/span>;\n&#10;\n\u003Cspan class=\"s-k\">function\u003C/span> \u003Cspan class=\"s-f\">reconnect\u003C/span>() {\n  \u003Cspan class=\"s-k\">const\u003C/span> \u003Cspan class=\"s-v\">delay\u003C/span> = \u003Cspan class=\"s-v\">Math\u003C/span>.\u003Cspan class=\"s-f\">min\u003C/span>(\u003Cspan class=\"s-v\">BASE_DELAY\u003C/span> * \u003Cspan class=\"s-v\">Math\u003C/span>.\u003Cspan class=\"s-f\">pow\u003C/span>(\u003Cspan class=\"s-n\">2\u003C/span>, \u003Cspan class=\"s-v\">attempt\u003C/span>), \u003Cspan class=\"s-v\">MAX_DELAY\u003C/span>);\n  \u003Cspan class=\"s-k\">const\u003C/span> \u003Cspan class=\"s-v\">jitter\u003C/span> = \u003Cspan class=\"s-v\">delay\u003C/span> * \u003Cspan class=\"s-n\">0.5\u003C/span> * \u003Cspan class=\"s-v\">Math\u003C/span>.\u003Cspan class=\"s-f\">random\u003C/span>();\n  \u003Cspan class=\"s-f\">setTimeout\u003C/span>(() =&gt; {\n    \u003Cspan class=\"s-v\">attempt\u003C/span>++;\n    \u003Cspan class=\"s-f\">connect\u003C/span>(); \u003Cspan class=\"s-c\">// your connection logic\u003C/span>\n  }, \u003Cspan class=\"s-v\">delay\u003C/span> + \u003Cspan class=\"s-v\">jitter\u003C/span>);\n}\n&#10;\n\u003Cspan class=\"s-k\">function\u003C/span> \u003Cspan class=\"s-f\">onConnected\u003C/span>() {\n  \u003Cspan class=\"s-v\">attempt\u003C/span> = \u003Cspan class=\"s-n\">0\u003C/span>; \u003Cspan class=\"s-c\">// reset on successful connection\u003C/span>\n  \u003Cspan class=\"s-f\">authenticate\u003C/span>();\n  \u003Cspan class=\"s-f\">resubscribe\u003C/span>();\n}\u003C/pre>\n\u003C/CodeBlock>\n\n## Best practices\n\n- **One connection per endpoint family** -- share one `book` connection for orderbook channels and one `nonbook` connection for everything else, rather than opening one connection per subscription.\n- **Subscribe in batches** -- send all channels in a single `public/subscribe` message rather than one message per channel.\n- **Handle backpressure** -- keep your message handler lightweight. Offload heavy processing (database writes, analytics) to a background queue.\n- **Track subscriptions client-side** -- maintain a local registry of active subscriptions so you can re-subscribe after reconnection.\n- **Use compression** -- enable `brotli` compression to reduce bandwidth, especially for high-frequency channels like `TRADE` and `BLOCK_BOOK_SNAPSHOT`.",{"type":11,"children":12,"data":1666,"position":1668},"root",[13,16,37,38,79,80,221,222,237,238,352,353,368,369,385,386,400,401,475,476,1383,1384,1399,1400],{"type":14,"value":15},"text","\n",{"type":17,"tagName":18,"properties":19,"children":21,"position":32},"element","h2",{"id":20},"heartbeat",[22],{"type":14,"value":23,"position":24},"Heartbeat",{"start":25,"end":29},{"line":26,"column":27,"offset":28},3,4,27,{"line":26,"column":30,"offset":31},13,36,{"start":33,"end":36},{"line":26,"column":34,"offset":35},1,24,{"line":26,"column":30,"offset":31},{"type":14,"value":15},{"type":17,"tagName":39,"properties":40,"children":41,"position":76},"p",{},[42,51,69],{"type":14,"value":43,"position":44},"Send a ping every ",{"start":45,"end":48},{"line":46,"column":34,"offset":47},5,38,{"line":46,"column":49,"offset":50},19,56,{"type":17,"tagName":52,"properties":53,"children":54,"position":64},"strong",{},[55],{"type":14,"value":56,"position":57},"30 seconds",{"start":58,"end":61},{"line":46,"column":59,"offset":60},21,58,{"line":46,"column":62,"offset":63},31,68,{"start":65,"end":66},{"line":46,"column":49,"offset":50},{"line":46,"column":67,"offset":68},33,70,{"type":14,"value":70,"position":71}," to keep the connection alive:",{"start":72,"end":73},{"line":46,"column":67,"offset":68},{"line":46,"column":74,"offset":75},63,100,{"start":77,"end":78},{"line":46,"column":34,"offset":47},{"line":46,"column":74,"offset":75},{"type":14,"value":15},{"type":17,"tagName":81,"properties":82,"children":84,"position":216},"codeblock",{"lang":83},"Send",[85,93,210],{"type":14,"value":15,"position":86},{"start":87,"end":90},{"line":88,"column":35,"offset":89},7,125,{"line":91,"column":34,"offset":92},8,126,{"type":17,"tagName":94,"properties":95,"children":96,"position":206},"pre",{},[97,106,124,130,149,156,173,179,198],{"type":14,"value":98,"position":99},"{\n  ",{"start":100,"end":103},{"line":91,"column":101,"offset":102},6,131,{"line":104,"column":26,"offset":105},9,135,{"type":17,"tagName":107,"properties":108,"children":111,"position":119},"span",{"className":109},[110],"s-p",[112],{"type":14,"value":113,"position":114},"\"type\"",{"start":115,"end":117},{"line":104,"column":59,"offset":116},153,{"line":104,"column":28,"offset":118},159,{"start":120,"end":121},{"line":104,"column":26,"offset":105},{"line":104,"column":122,"offset":123},34,166,{"type":14,"value":125,"position":126},": ",{"start":127,"end":128},{"line":104,"column":122,"offset":123},{"line":104,"column":31,"offset":129},168,{"type":17,"tagName":107,"properties":131,"children":134,"position":144},{"className":132},[133],"s-s",[135],{"type":14,"value":136,"position":137},"\"ping\"",{"start":138,"end":141},{"line":104,"column":139,"offset":140},54,186,{"line":104,"column":142,"offset":143},60,192,{"start":145,"end":146},{"line":104,"column":31,"offset":129},{"line":104,"column":147,"offset":148},67,199,{"type":14,"value":150,"position":151},",\n  ",{"start":152,"end":153},{"line":104,"column":147,"offset":148},{"line":154,"column":26,"offset":155},10,203,{"type":17,"tagName":107,"properties":157,"children":159,"position":168},{"className":158},[110],[160],{"type":14,"value":161,"position":162},"\"timestamp\"",{"start":163,"end":165},{"line":154,"column":59,"offset":164},221,{"line":154,"column":166,"offset":167},32,232,{"start":169,"end":170},{"line":154,"column":26,"offset":155},{"line":154,"column":171,"offset":172},39,239,{"type":14,"value":125,"position":174},{"start":175,"end":176},{"line":154,"column":171,"offset":172},{"line":154,"column":177,"offset":178},41,241,{"type":17,"tagName":107,"properties":180,"children":183,"position":193},{"className":181},[182],"s-n",[184],{"type":14,"value":185,"position":186},"1769056941234",{"start":187,"end":190},{"line":154,"column":188,"offset":189},59,259,{"line":154,"column":191,"offset":192},72,272,{"start":194,"end":195},{"line":154,"column":177,"offset":178},{"line":154,"column":196,"offset":197},79,279,{"type":14,"value":199,"position":200},"\n}",{"start":201,"end":202},{"line":154,"column":196,"offset":197},{"line":203,"column":204,"offset":205},11,2,281,{"start":207,"end":208},{"line":91,"column":34,"offset":92},{"line":203,"column":91,"offset":209},287,{"type":14,"value":15,"position":211},{"start":212,"end":213},{"line":203,"column":91,"offset":209},{"line":214,"column":34,"offset":215},12,288,{"start":217,"end":219},{"line":88,"column":34,"offset":218},102,{"line":214,"column":30,"offset":220},300,{"type":14,"value":15},{"type":17,"tagName":39,"properties":223,"children":224,"position":234},{},[225],{"type":14,"value":226,"position":227},"The server responds with:",{"start":228,"end":231},{"line":229,"column":34,"offset":230},14,302,{"line":229,"column":232,"offset":233},26,327,{"start":235,"end":236},{"line":229,"column":34,"offset":230},{"line":229,"column":232,"offset":233},{"type":14,"value":15},{"type":17,"tagName":81,"properties":239,"children":241,"position":347},{"lang":240},"Receive",[242,250,342],{"type":14,"value":15,"position":243},{"start":244,"end":247},{"line":245,"column":28,"offset":246},16,355,{"line":248,"column":34,"offset":249},17,356,{"type":17,"tagName":94,"properties":251,"children":252,"position":338},{},[253,260,274,279,294,299,313,318,332],{"type":14,"value":98,"position":254},{"start":255,"end":257},{"line":248,"column":101,"offset":256},361,{"line":258,"column":26,"offset":259},18,365,{"type":17,"tagName":107,"properties":261,"children":263,"position":270},{"className":262},[110],[264],{"type":14,"value":113,"position":265},{"start":266,"end":268},{"line":258,"column":59,"offset":267},383,{"line":258,"column":28,"offset":269},389,{"start":271,"end":272},{"line":258,"column":26,"offset":259},{"line":258,"column":122,"offset":273},396,{"type":14,"value":125,"position":275},{"start":276,"end":277},{"line":258,"column":122,"offset":273},{"line":258,"column":31,"offset":278},398,{"type":17,"tagName":107,"properties":280,"children":282,"position":290},{"className":281},[133],[283],{"type":14,"value":284,"position":285},"\"pong\"",{"start":286,"end":288},{"line":258,"column":139,"offset":287},416,{"line":258,"column":142,"offset":289},422,{"start":291,"end":292},{"line":258,"column":31,"offset":278},{"line":258,"column":147,"offset":293},429,{"type":14,"value":150,"position":295},{"start":296,"end":297},{"line":258,"column":147,"offset":293},{"line":49,"column":26,"offset":298},433,{"type":17,"tagName":107,"properties":300,"children":302,"position":309},{"className":301},[110],[303],{"type":14,"value":161,"position":304},{"start":305,"end":307},{"line":49,"column":59,"offset":306},451,{"line":49,"column":166,"offset":308},462,{"start":310,"end":311},{"line":49,"column":26,"offset":298},{"line":49,"column":171,"offset":312},469,{"type":14,"value":125,"position":314},{"start":315,"end":316},{"line":49,"column":171,"offset":312},{"line":49,"column":177,"offset":317},471,{"type":17,"tagName":107,"properties":319,"children":321,"position":328},{"className":320},[182],[322],{"type":14,"value":185,"position":323},{"start":324,"end":326},{"line":49,"column":188,"offset":325},489,{"line":49,"column":191,"offset":327},502,{"start":329,"end":330},{"line":49,"column":177,"offset":317},{"line":49,"column":196,"offset":331},509,{"type":14,"value":199,"position":333},{"start":334,"end":335},{"line":49,"column":196,"offset":331},{"line":336,"column":204,"offset":337},20,511,{"start":339,"end":340},{"line":248,"column":34,"offset":249},{"line":336,"column":91,"offset":341},517,{"type":14,"value":15,"position":343},{"start":344,"end":345},{"line":336,"column":91,"offset":341},{"line":59,"column":34,"offset":346},518,{"start":348,"end":350},{"line":245,"column":34,"offset":349},329,{"line":59,"column":30,"offset":351},530,{"type":14,"value":15},{"type":17,"tagName":39,"properties":354,"children":355,"position":365},{},[356],{"type":14,"value":357,"position":358},"If the server receives no ping within 60 seconds, it closes the connection.",{"start":359,"end":362},{"line":360,"column":34,"offset":361},23,532,{"line":360,"column":363,"offset":364},76,607,{"start":366,"end":367},{"line":360,"column":34,"offset":361},{"line":360,"column":363,"offset":364},{"type":14,"value":15},{"type":17,"tagName":18,"properties":370,"children":372,"position":381},{"id":371},"reconnection-strategy",[373],{"type":14,"value":374,"position":375},"Reconnection strategy",{"start":376,"end":379},{"line":377,"column":27,"offset":378},25,612,{"line":377,"column":377,"offset":380},633,{"start":382,"end":384},{"line":377,"column":34,"offset":383},609,{"line":377,"column":377,"offset":380},{"type":14,"value":15},{"type":17,"tagName":39,"properties":387,"children":388,"position":397},{},[389],{"type":14,"value":390,"position":391},"Network disruptions are inevitable. Your client should handle disconnections gracefully with exponential backoff:",{"start":392,"end":394},{"line":28,"column":34,"offset":393},635,{"line":28,"column":395,"offset":396},114,748,{"start":398,"end":399},{"line":28,"column":34,"offset":393},{"line":28,"column":395,"offset":396},{"type":14,"value":15},{"type":17,"tagName":402,"properties":403,"children":404,"position":472},"ol",{},[405,406,422,423,439,440,456,457,471],{"type":14,"value":15},{"type":17,"tagName":407,"properties":408,"children":409,"position":418},"li",{},[410],{"type":14,"value":411,"position":412},"On disconnect, wait a short initial delay (e.g., 1 second).",{"start":413,"end":416},{"line":414,"column":27,"offset":415},28,752,{"line":414,"column":74,"offset":417},811,{"start":419,"end":421},{"line":414,"column":34,"offset":420},749,{"line":414,"column":74,"offset":417},{"type":14,"value":15},{"type":17,"tagName":407,"properties":424,"children":425,"position":435},{},[426],{"type":14,"value":427,"position":428},"On each failed reconnection attempt, double the delay up to a maximum (e.g., 30 seconds).",{"start":429,"end":432},{"line":430,"column":27,"offset":431},29,815,{"line":430,"column":433,"offset":434},93,904,{"start":436,"end":438},{"line":430,"column":34,"offset":437},812,{"line":430,"column":433,"offset":434},{"type":14,"value":15},{"type":17,"tagName":407,"properties":441,"children":442,"position":452},{},[443],{"type":14,"value":444,"position":445},"Add random jitter to prevent thundering herd when many clients reconnect simultaneously.",{"start":446,"end":449},{"line":447,"column":27,"offset":448},30,908,{"line":447,"column":450,"offset":451},92,996,{"start":453,"end":455},{"line":447,"column":34,"offset":454},905,{"line":447,"column":450,"offset":451},{"type":14,"value":15},{"type":17,"tagName":407,"properties":458,"children":459,"position":467},{},[460],{"type":14,"value":461,"position":462},"After reconnecting, re-authenticate and re-subscribe to all channels on that connection.",{"start":463,"end":465},{"line":62,"column":27,"offset":464},1000,{"line":62,"column":450,"offset":466},1088,{"start":468,"end":470},{"line":62,"column":34,"offset":469},997,{"line":62,"column":450,"offset":466},{"type":14,"value":15},{"start":473,"end":474},{"line":414,"column":34,"offset":420},{"line":62,"column":450,"offset":466},{"type":14,"value":15},{"type":17,"tagName":81,"properties":477,"children":479,"position":1378},{"lang":478},"JavaScript",[480,486,1373],{"type":14,"value":15,"position":481},{"start":482,"end":484},{"line":67,"column":447,"offset":483},1119,{"line":122,"column":34,"offset":485},1120,{"type":17,"tagName":94,"properties":487,"children":488,"position":1369},{},[489,506,513,531,538,555,562,576,581,598,604,621,626,642,647,664,669,687,693,708,713,730,736,750,755,773,778,796,802,819,825,842,849,865,871,889,895,912,919,936,943,960,967,981,986,1001,1006,1022,1028,1046,1052,1067,1073,1089,1095,1110,1117,1131,1138,1153,1159,1176,1183,1197,1203,1217,1224,1238,1243,1259,1264,1278,1283,1297,1303,1320,1327,1342,1347,1362],{"type":17,"tagName":107,"properties":490,"children":493,"position":501},{"className":491},[492],"s-k",[494],{"type":14,"value":495,"position":496},"const",{"start":497,"end":499},{"line":122,"column":35,"offset":498},1143,{"line":122,"column":430,"offset":500},1148,{"start":502,"end":504},{"line":122,"column":101,"offset":503},1125,{"line":122,"column":31,"offset":505},1155,{"type":14,"value":507,"position":508}," ",{"start":509,"end":510},{"line":122,"column":31,"offset":505},{"line":122,"column":511,"offset":512},37,1156,{"type":17,"tagName":107,"properties":514,"children":517,"position":527},{"className":515},[516],"s-v",[518],{"type":14,"value":519,"position":520},"BASE_DELAY",{"start":521,"end":524},{"line":122,"column":522,"offset":523},55,1174,{"line":122,"column":525,"offset":526},65,1184,{"start":528,"end":529},{"line":122,"column":511,"offset":512},{"line":122,"column":191,"offset":530},1191,{"type":14,"value":532,"position":533}," = ",{"start":534,"end":535},{"line":122,"column":191,"offset":530},{"line":122,"column":536,"offset":537},75,1194,{"type":17,"tagName":107,"properties":539,"children":541,"position":550},{"className":540},[182],[542],{"type":14,"value":543,"position":544},"1000",{"start":545,"end":547},{"line":122,"column":433,"offset":546},1212,{"line":122,"column":548,"offset":549},97,1216,{"start":551,"end":552},{"line":122,"column":536,"offset":537},{"line":122,"column":553,"offset":554},104,1223,{"type":14,"value":556,"position":557},";\n",{"start":558,"end":559},{"line":122,"column":553,"offset":554},{"line":560,"column":34,"offset":561},35,1225,{"type":17,"tagName":107,"properties":563,"children":565,"position":572},{"className":564},[492],[566],{"type":14,"value":495,"position":567},{"start":568,"end":570},{"line":560,"column":49,"offset":569},1243,{"line":560,"column":35,"offset":571},1248,{"start":573,"end":574},{"line":560,"column":34,"offset":561},{"line":560,"column":62,"offset":575},1255,{"type":14,"value":507,"position":577},{"start":578,"end":579},{"line":560,"column":62,"offset":575},{"line":560,"column":166,"offset":580},1256,{"type":17,"tagName":107,"properties":582,"children":584,"position":593},{"className":583},[516],[585],{"type":14,"value":586,"position":587},"MAX_DELAY",{"start":588,"end":591},{"line":560,"column":589,"offset":590},50,1274,{"line":560,"column":188,"offset":592},1283,{"start":594,"end":595},{"line":560,"column":166,"offset":580},{"line":560,"column":596,"offset":597},66,1290,{"type":14,"value":532,"position":599},{"start":600,"end":601},{"line":560,"column":596,"offset":597},{"line":560,"column":602,"offset":603},69,1293,{"type":17,"tagName":107,"properties":605,"children":607,"position":616},{"className":606},[182],[608],{"type":14,"value":609,"position":610},"30000",{"start":611,"end":614},{"line":560,"column":612,"offset":613},87,1311,{"line":560,"column":450,"offset":615},1316,{"start":617,"end":618},{"line":560,"column":602,"offset":603},{"line":560,"column":619,"offset":620},99,1323,{"type":14,"value":556,"position":622},{"start":623,"end":624},{"line":560,"column":619,"offset":620},{"line":31,"column":34,"offset":625},1325,{"type":17,"tagName":107,"properties":627,"children":629,"position":638},{"className":628},[492],[630],{"type":14,"value":631,"position":632},"let",{"start":633,"end":635},{"line":31,"column":49,"offset":634},1343,{"line":31,"column":636,"offset":637},22,1346,{"start":639,"end":640},{"line":31,"column":34,"offset":625},{"line":31,"column":430,"offset":641},1353,{"type":14,"value":507,"position":643},{"start":644,"end":645},{"line":31,"column":430,"offset":641},{"line":31,"column":447,"offset":646},1354,{"type":17,"tagName":107,"properties":648,"children":650,"position":659},{"className":649},[516],[651],{"type":14,"value":652,"position":653},"attempt",{"start":654,"end":657},{"line":31,"column":655,"offset":656},48,1372,{"line":31,"column":522,"offset":658},1379,{"start":660,"end":661},{"line":31,"column":447,"offset":646},{"line":31,"column":662,"offset":663},62,1386,{"type":14,"value":532,"position":665},{"start":666,"end":667},{"line":31,"column":662,"offset":663},{"line":31,"column":525,"offset":668},1389,{"type":17,"tagName":107,"properties":670,"children":672,"position":682},{"className":671},[182],[673],{"type":14,"value":674,"position":675},"0",{"start":676,"end":679},{"line":31,"column":677,"offset":678},83,1407,{"line":31,"column":680,"offset":681},84,1408,{"start":683,"end":684},{"line":31,"column":525,"offset":668},{"line":31,"column":685,"offset":686},91,1415,{"type":14,"value":688,"position":689},";\n\n\n",{"start":690,"end":691},{"line":31,"column":685,"offset":686},{"line":47,"column":34,"offset":692},1423,{"type":17,"tagName":107,"properties":694,"children":696,"position":704},{"className":695},[492],[697],{"type":14,"value":698,"position":699},"function",{"start":700,"end":702},{"line":47,"column":49,"offset":701},1441,{"line":47,"column":28,"offset":703},1449,{"start":705,"end":706},{"line":47,"column":34,"offset":692},{"line":47,"column":122,"offset":707},1456,{"type":14,"value":507,"position":709},{"start":710,"end":711},{"line":47,"column":122,"offset":707},{"line":47,"column":560,"offset":712},1457,{"type":17,"tagName":107,"properties":714,"children":717,"position":726},{"className":715},[716],"s-f",[718],{"type":14,"value":719,"position":720},"reconnect",{"start":721,"end":724},{"line":47,"column":722,"offset":723},53,1475,{"line":47,"column":662,"offset":725},1484,{"start":727,"end":728},{"line":47,"column":560,"offset":712},{"line":47,"column":602,"offset":729},1491,{"type":14,"value":731,"position":732},"() {\n  ",{"start":733,"end":734},{"line":47,"column":602,"offset":729},{"line":171,"column":26,"offset":735},1498,{"type":17,"tagName":107,"properties":737,"children":739,"position":746},{"className":738},[492],[740],{"type":14,"value":495,"position":741},{"start":742,"end":744},{"line":171,"column":59,"offset":743},1516,{"line":171,"column":232,"offset":745},1521,{"start":747,"end":748},{"line":171,"column":26,"offset":735},{"line":171,"column":67,"offset":749},1528,{"type":14,"value":507,"position":751},{"start":752,"end":753},{"line":171,"column":67,"offset":749},{"line":171,"column":122,"offset":754},1529,{"type":17,"tagName":107,"properties":756,"children":758,"position":768},{"className":757},[516],[759],{"type":14,"value":760,"position":761},"delay",{"start":762,"end":765},{"line":171,"column":763,"offset":764},52,1547,{"line":171,"column":766,"offset":767},57,1552,{"start":769,"end":770},{"line":171,"column":122,"offset":754},{"line":171,"column":771,"offset":772},64,1559,{"type":14,"value":532,"position":774},{"start":775,"end":776},{"line":171,"column":771,"offset":772},{"line":171,"column":147,"offset":777},1562,{"type":17,"tagName":107,"properties":779,"children":781,"position":791},{"className":780},[516],[782],{"type":14,"value":783,"position":784},"Math",{"start":785,"end":788},{"line":171,"column":786,"offset":787},85,1580,{"line":171,"column":789,"offset":790},89,1584,{"start":792,"end":793},{"line":171,"column":147,"offset":777},{"line":171,"column":794,"offset":795},96,1591,{"type":14,"value":797,"position":798},".",{"start":799,"end":800},{"line":171,"column":794,"offset":795},{"line":171,"column":548,"offset":801},1592,{"type":17,"tagName":107,"properties":803,"children":805,"position":815},{"className":804},[716],[806],{"type":14,"value":807,"position":808},"min",{"start":809,"end":812},{"line":171,"column":810,"offset":811},115,1610,{"line":171,"column":813,"offset":814},118,1613,{"start":816,"end":817},{"line":171,"column":548,"offset":801},{"line":171,"column":89,"offset":818},1620,{"type":14,"value":820,"position":821},"(",{"start":822,"end":823},{"line":171,"column":89,"offset":818},{"line":171,"column":92,"offset":824},1621,{"type":17,"tagName":107,"properties":826,"children":828,"position":837},{"className":827},[516],[829],{"type":14,"value":519,"position":830},{"start":831,"end":834},{"line":171,"column":832,"offset":833},144,1639,{"line":171,"column":835,"offset":836},154,1649,{"start":838,"end":839},{"line":171,"column":92,"offset":824},{"line":171,"column":840,"offset":841},161,1656,{"type":14,"value":843,"position":844}," * ",{"start":845,"end":846},{"line":171,"column":840,"offset":841},{"line":171,"column":847,"offset":848},164,1659,{"type":17,"tagName":107,"properties":850,"children":852,"position":860},{"className":851},[516],[853],{"type":14,"value":783,"position":854},{"start":855,"end":858},{"line":171,"column":856,"offset":857},182,1677,{"line":171,"column":140,"offset":859},1681,{"start":861,"end":862},{"line":171,"column":847,"offset":848},{"line":171,"column":863,"offset":864},193,1688,{"type":14,"value":797,"position":866},{"start":867,"end":868},{"line":171,"column":863,"offset":864},{"line":171,"column":869,"offset":870},194,1689,{"type":17,"tagName":107,"properties":872,"children":874,"position":884},{"className":873},[716],[875],{"type":14,"value":876,"position":877},"pow",{"start":878,"end":881},{"line":171,"column":879,"offset":880},212,1707,{"line":171,"column":882,"offset":883},215,1710,{"start":885,"end":886},{"line":171,"column":869,"offset":870},{"line":171,"column":887,"offset":888},222,1717,{"type":14,"value":820,"position":890},{"start":891,"end":892},{"line":171,"column":887,"offset":888},{"line":171,"column":893,"offset":894},223,1718,{"type":17,"tagName":107,"properties":896,"children":898,"position":907},{"className":897},[182],[899],{"type":14,"value":900,"position":901},"2",{"start":902,"end":904},{"line":171,"column":178,"offset":903},1736,{"line":171,"column":905,"offset":906},242,1737,{"start":908,"end":909},{"line":171,"column":893,"offset":894},{"line":171,"column":910,"offset":911},249,1744,{"type":14,"value":913,"position":914},", ",{"start":915,"end":916},{"line":171,"column":910,"offset":911},{"line":171,"column":917,"offset":918},251,1746,{"type":17,"tagName":107,"properties":920,"children":922,"position":931},{"className":921},[516],[923],{"type":14,"value":652,"position":924},{"start":925,"end":928},{"line":171,"column":926,"offset":927},269,1764,{"line":171,"column":929,"offset":930},276,1771,{"start":932,"end":933},{"line":171,"column":917,"offset":918},{"line":171,"column":934,"offset":935},283,1778,{"type":14,"value":937,"position":938},"), ",{"start":939,"end":940},{"line":171,"column":934,"offset":935},{"line":171,"column":941,"offset":942},286,1781,{"type":17,"tagName":107,"properties":944,"children":946,"position":955},{"className":945},[516],[947],{"type":14,"value":586,"position":948},{"start":949,"end":952},{"line":171,"column":950,"offset":951},304,1799,{"line":171,"column":953,"offset":954},313,1808,{"start":956,"end":957},{"line":171,"column":941,"offset":942},{"line":171,"column":958,"offset":959},320,1815,{"type":14,"value":961,"position":962},");\n  ",{"start":963,"end":964},{"line":171,"column":958,"offset":959},{"line":965,"column":26,"offset":966},40,1820,{"type":17,"tagName":107,"properties":968,"children":970,"position":977},{"className":969},[492],[971],{"type":14,"value":495,"position":972},{"start":973,"end":975},{"line":965,"column":59,"offset":974},1838,{"line":965,"column":232,"offset":976},1843,{"start":978,"end":979},{"line":965,"column":26,"offset":966},{"line":965,"column":67,"offset":980},1850,{"type":14,"value":507,"position":982},{"start":983,"end":984},{"line":965,"column":67,"offset":980},{"line":965,"column":122,"offset":985},1851,{"type":17,"tagName":107,"properties":987,"children":989,"position":997},{"className":988},[516],[990],{"type":14,"value":991,"position":992},"jitter",{"start":993,"end":995},{"line":965,"column":763,"offset":994},1869,{"line":965,"column":60,"offset":996},1875,{"start":998,"end":999},{"line":965,"column":122,"offset":985},{"line":965,"column":525,"offset":1000},1882,{"type":14,"value":532,"position":1002},{"start":1003,"end":1004},{"line":965,"column":525,"offset":1000},{"line":965,"column":63,"offset":1005},1885,{"type":17,"tagName":107,"properties":1007,"children":1009,"position":1017},{"className":1008},[516],[1010],{"type":14,"value":760,"position":1011},{"start":1012,"end":1015},{"line":965,"column":1013,"offset":1014},86,1903,{"line":965,"column":685,"offset":1016},1908,{"start":1018,"end":1019},{"line":965,"column":63,"offset":1005},{"line":965,"column":1020,"offset":1021},98,1915,{"type":14,"value":843,"position":1023},{"start":1024,"end":1025},{"line":965,"column":1020,"offset":1021},{"line":965,"column":1026,"offset":1027},101,1918,{"type":17,"tagName":107,"properties":1029,"children":1031,"position":1041},{"className":1030},[182],[1032],{"type":14,"value":1033,"position":1034},"0.5",{"start":1035,"end":1038},{"line":965,"column":1036,"offset":1037},119,1936,{"line":965,"column":1039,"offset":1040},122,1939,{"start":1042,"end":1043},{"line":965,"column":1026,"offset":1027},{"line":965,"column":1044,"offset":1045},129,1946,{"type":14,"value":843,"position":1047},{"start":1048,"end":1049},{"line":965,"column":1044,"offset":1045},{"line":965,"column":1050,"offset":1051},132,1949,{"type":17,"tagName":107,"properties":1053,"children":1055,"position":1063},{"className":1054},[516],[1056],{"type":14,"value":783,"position":1057},{"start":1058,"end":1061},{"line":965,"column":1059,"offset":1060},150,1967,{"line":965,"column":835,"offset":1062},1971,{"start":1064,"end":1065},{"line":965,"column":1050,"offset":1051},{"line":965,"column":840,"offset":1066},1978,{"type":14,"value":797,"position":1068},{"start":1069,"end":1070},{"line":965,"column":840,"offset":1066},{"line":965,"column":1071,"offset":1072},162,1979,{"type":17,"tagName":107,"properties":1074,"children":1076,"position":1085},{"className":1075},[716],[1077],{"type":14,"value":1078,"position":1079},"random",{"start":1080,"end":1083},{"line":965,"column":1081,"offset":1082},180,1997,{"line":965,"column":140,"offset":1084},2003,{"start":1086,"end":1087},{"line":965,"column":1071,"offset":1072},{"line":965,"column":863,"offset":1088},2010,{"type":14,"value":1090,"position":1091},"();\n  ",{"start":1092,"end":1093},{"line":965,"column":863,"offset":1088},{"line":177,"column":26,"offset":1094},2016,{"type":17,"tagName":107,"properties":1096,"children":1098,"position":1106},{"className":1097},[716],[1099],{"type":14,"value":1100,"position":1101},"setTimeout",{"start":1102,"end":1104},{"line":177,"column":59,"offset":1103},2034,{"line":177,"column":62,"offset":1105},2044,{"start":1107,"end":1108},{"line":177,"column":26,"offset":1094},{"line":177,"column":47,"offset":1109},2051,{"type":14,"value":1111,"position":1112},"(() => {\n    ",{"start":1113,"end":1114},{"line":177,"column":47,"offset":1109},{"line":1115,"column":46,"offset":1116},42,2067,{"type":17,"tagName":107,"properties":1118,"children":1120,"position":1127},{"className":1119},[516],[1121],{"type":14,"value":652,"position":1122},{"start":1123,"end":1125},{"line":1115,"column":360,"offset":1124},2085,{"line":1115,"column":447,"offset":1126},2092,{"start":1128,"end":1129},{"line":1115,"column":46,"offset":1116},{"line":1115,"column":511,"offset":1130},2099,{"type":14,"value":1132,"position":1133},"++;\n    ",{"start":1134,"end":1135},{"line":1115,"column":511,"offset":1130},{"line":1136,"column":46,"offset":1137},43,2107,{"type":17,"tagName":107,"properties":1139,"children":1141,"position":1149},{"className":1140},[716],[1142],{"type":14,"value":1143,"position":1144},"connect",{"start":1145,"end":1147},{"line":1136,"column":360,"offset":1146},2125,{"line":1136,"column":447,"offset":1148},2132,{"start":1150,"end":1151},{"line":1136,"column":46,"offset":1137},{"line":1136,"column":511,"offset":1152},2139,{"type":14,"value":1154,"position":1155},"(); ",{"start":1156,"end":1157},{"line":1136,"column":511,"offset":1152},{"line":1136,"column":177,"offset":1158},2143,{"type":17,"tagName":107,"properties":1160,"children":1163,"position":1171},{"className":1161},[1162],"s-c",[1164],{"type":14,"value":1165,"position":1166},"// your connection logic",{"start":1167,"end":1169},{"line":1136,"column":188,"offset":1168},2161,{"line":1136,"column":677,"offset":1170},2185,{"start":1172,"end":1173},{"line":1136,"column":177,"offset":1158},{"line":1136,"column":1174,"offset":1175},90,2192,{"type":14,"value":1177,"position":1178},"\n  }, ",{"start":1179,"end":1180},{"line":1136,"column":1174,"offset":1175},{"line":1181,"column":101,"offset":1182},44,2198,{"type":17,"tagName":107,"properties":1184,"children":1186,"position":1193},{"className":1185},[516],[1187],{"type":14,"value":760,"position":1188},{"start":1189,"end":1191},{"line":1181,"column":35,"offset":1190},2216,{"line":1181,"column":430,"offset":1192},2221,{"start":1194,"end":1195},{"line":1181,"column":101,"offset":1182},{"line":1181,"column":31,"offset":1196},2228,{"type":14,"value":1198,"position":1199}," + ",{"start":1200,"end":1201},{"line":1181,"column":31,"offset":1196},{"line":1181,"column":171,"offset":1202},2231,{"type":17,"tagName":107,"properties":1204,"children":1206,"position":1213},{"className":1205},[516],[1207],{"type":14,"value":991,"position":1208},{"start":1209,"end":1211},{"line":1181,"column":766,"offset":1210},2249,{"line":1181,"column":74,"offset":1212},2255,{"start":1214,"end":1215},{"line":1181,"column":171,"offset":1202},{"line":1181,"column":68,"offset":1216},2262,{"type":14,"value":1218,"position":1219},");\n}\n\n\n",{"start":1220,"end":1221},{"line":1181,"column":68,"offset":1216},{"line":1222,"column":34,"offset":1223},47,2273,{"type":17,"tagName":107,"properties":1225,"children":1227,"position":1234},{"className":1226},[492],[1228],{"type":14,"value":698,"position":1229},{"start":1230,"end":1232},{"line":1222,"column":49,"offset":1231},2291,{"line":1222,"column":28,"offset":1233},2299,{"start":1235,"end":1236},{"line":1222,"column":34,"offset":1223},{"line":1222,"column":122,"offset":1237},2306,{"type":14,"value":507,"position":1239},{"start":1240,"end":1241},{"line":1222,"column":122,"offset":1237},{"line":1222,"column":560,"offset":1242},2307,{"type":17,"tagName":107,"properties":1244,"children":1246,"position":1254},{"className":1245},[716],[1247],{"type":14,"value":1248,"position":1249},"onConnected",{"start":1250,"end":1252},{"line":1222,"column":722,"offset":1251},2325,{"line":1222,"column":771,"offset":1253},2336,{"start":1255,"end":1256},{"line":1222,"column":560,"offset":1242},{"line":1222,"column":1257,"offset":1258},71,2343,{"type":14,"value":731,"position":1260},{"start":1261,"end":1262},{"line":1222,"column":1257,"offset":1258},{"line":655,"column":26,"offset":1263},2350,{"type":17,"tagName":107,"properties":1265,"children":1267,"position":1274},{"className":1266},[516],[1268],{"type":14,"value":652,"position":1269},{"start":1270,"end":1272},{"line":655,"column":59,"offset":1271},2368,{"line":655,"column":414,"offset":1273},2375,{"start":1275,"end":1276},{"line":655,"column":26,"offset":1263},{"line":655,"column":560,"offset":1277},2382,{"type":14,"value":532,"position":1279},{"start":1280,"end":1281},{"line":655,"column":560,"offset":1277},{"line":655,"column":47,"offset":1282},2385,{"type":17,"tagName":107,"properties":1284,"children":1286,"position":1293},{"className":1285},[182],[1287],{"type":14,"value":674,"position":1288},{"start":1289,"end":1291},{"line":655,"column":50,"offset":1290},2403,{"line":655,"column":766,"offset":1292},2404,{"start":1294,"end":1295},{"line":655,"column":47,"offset":1282},{"line":655,"column":771,"offset":1296},2411,{"type":14,"value":1298,"position":1299},"; ",{"start":1300,"end":1301},{"line":655,"column":771,"offset":1296},{"line":655,"column":596,"offset":1302},2413,{"type":17,"tagName":107,"properties":1304,"children":1306,"position":1315},{"className":1305},[1162],[1307],{"type":14,"value":1308,"position":1309},"// reset on successful connection",{"start":1310,"end":1312},{"line":655,"column":680,"offset":1311},2431,{"line":655,"column":1313,"offset":1314},117,2464,{"start":1316,"end":1317},{"line":655,"column":596,"offset":1302},{"line":655,"column":1318,"offset":1319},124,2471,{"type":14,"value":1321,"position":1322},"\n  ",{"start":1323,"end":1324},{"line":655,"column":1318,"offset":1319},{"line":1325,"column":26,"offset":1326},49,2474,{"type":17,"tagName":107,"properties":1328,"children":1330,"position":1338},{"className":1329},[716],[1331],{"type":14,"value":1332,"position":1333},"authenticate",{"start":1334,"end":1336},{"line":1325,"column":59,"offset":1335},2492,{"line":1325,"column":67,"offset":1337},2504,{"start":1339,"end":1340},{"line":1325,"column":26,"offset":1326},{"line":1325,"column":965,"offset":1341},2511,{"type":14,"value":1090,"position":1343},{"start":1344,"end":1345},{"line":1325,"column":965,"offset":1341},{"line":589,"column":26,"offset":1346},2517,{"type":17,"tagName":107,"properties":1348,"children":1350,"position":1358},{"className":1349},[716],[1351],{"type":14,"value":1352,"position":1353},"resubscribe",{"start":1354,"end":1356},{"line":589,"column":59,"offset":1355},2535,{"line":589,"column":166,"offset":1357},2546,{"start":1359,"end":1360},{"line":589,"column":26,"offset":1346},{"line":589,"column":171,"offset":1361},2553,{"type":14,"value":1363,"position":1364},"();\n}",{"start":1365,"end":1366},{"line":589,"column":171,"offset":1361},{"line":1367,"column":204,"offset":1368},51,2558,{"start":1370,"end":1371},{"line":122,"column":34,"offset":485},{"line":1367,"column":91,"offset":1372},2564,{"type":14,"value":15,"position":1374},{"start":1375,"end":1376},{"line":1367,"column":91,"offset":1372},{"line":763,"column":34,"offset":1377},2565,{"start":1379,"end":1381},{"line":67,"column":34,"offset":1380},1090,{"line":763,"column":30,"offset":1382},2577,{"type":14,"value":15},{"type":17,"tagName":18,"properties":1385,"children":1387,"position":1395},{"id":1386},"best-practices",[1388],{"type":14,"value":1389,"position":1390},"Best practices",{"start":1391,"end":1393},{"line":139,"column":27,"offset":1392},2582,{"line":139,"column":258,"offset":1394},2596,{"start":1396,"end":1398},{"line":139,"column":34,"offset":1397},2579,{"line":139,"column":258,"offset":1394},{"type":14,"value":15},{"type":17,"tagName":1401,"properties":1402,"children":1403,"position":1663},"ul",{},[1404,1405,1473,1474,1520,1521,1550,1551,1579,1580,1662],{"type":14,"value":15},{"type":17,"tagName":407,"properties":1406,"children":1407,"position":1469},{},[1408,1423,1429,1443,1449,1462],{"type":17,"tagName":52,"properties":1409,"children":1410,"position":1418},{},[1411],{"type":14,"value":1412,"position":1413},"One connection per endpoint family",{"start":1414,"end":1416},{"line":50,"column":46,"offset":1415},2602,{"line":50,"column":171,"offset":1417},2636,{"start":1419,"end":1421},{"line":50,"column":26,"offset":1420},2600,{"line":50,"column":177,"offset":1422},2638,{"type":14,"value":1424,"position":1425}," -- share one ",{"start":1426,"end":1427},{"line":50,"column":177,"offset":1422},{"line":50,"column":522,"offset":1428},2652,{"type":17,"tagName":1430,"properties":1431,"children":1432,"position":1440},"code",{},[1433],{"type":14,"value":1434,"position":1435},"book",{"start":1436,"end":1437},{"line":50,"column":522,"offset":1428},{"line":50,"column":1438,"offset":1439},61,2658,{"start":1441,"end":1442},{"line":50,"column":522,"offset":1428},{"line":50,"column":1438,"offset":1439},{"type":14,"value":1444,"position":1445}," connection for orderbook channels and one ",{"start":1446,"end":1447},{"line":50,"column":1438,"offset":1439},{"line":50,"column":553,"offset":1448},2701,{"type":17,"tagName":1430,"properties":1450,"children":1451,"position":1459},{},[1452],{"type":14,"value":1453,"position":1454},"nonbook",{"start":1455,"end":1456},{"line":50,"column":553,"offset":1448},{"line":50,"column":1457,"offset":1458},113,2710,{"start":1460,"end":1461},{"line":50,"column":553,"offset":1448},{"line":50,"column":1457,"offset":1458},{"type":14,"value":1463,"position":1464}," connection for everything else, rather than opening one connection per subscription.",{"start":1465,"end":1466},{"line":50,"column":1457,"offset":1458},{"line":50,"column":1467,"offset":1468},198,2795,{"start":1470,"end":1472},{"line":50,"column":34,"offset":1471},2598,{"line":50,"column":1467,"offset":1468},{"type":14,"value":15},{"type":17,"tagName":407,"properties":1475,"children":1476,"position":1516},{},[1477,1492,1498,1510],{"type":17,"tagName":52,"properties":1478,"children":1479,"position":1487},{},[1480],{"type":14,"value":1481,"position":1482},"Subscribe in batches",{"start":1483,"end":1485},{"line":766,"column":46,"offset":1484},2800,{"line":766,"column":377,"offset":1486},2820,{"start":1488,"end":1490},{"line":766,"column":26,"offset":1489},2798,{"line":766,"column":28,"offset":1491},2822,{"type":14,"value":1493,"position":1494}," -- send all channels in a single ",{"start":1495,"end":1496},{"line":766,"column":28,"offset":1491},{"line":766,"column":1438,"offset":1497},2856,{"type":17,"tagName":1430,"properties":1499,"children":1500,"position":1507},{},[1501],{"type":14,"value":1502,"position":1503},"public/subscribe",{"start":1504,"end":1505},{"line":766,"column":1438,"offset":1497},{"line":766,"column":196,"offset":1506},2874,{"start":1508,"end":1509},{"line":766,"column":1438,"offset":1497},{"line":766,"column":196,"offset":1506},{"type":14,"value":1511,"position":1512}," message rather than one message per channel.",{"start":1513,"end":1514},{"line":766,"column":196,"offset":1506},{"line":766,"column":1318,"offset":1515},2919,{"start":1517,"end":1519},{"line":766,"column":34,"offset":1518},2796,{"line":766,"column":1318,"offset":1515},{"type":14,"value":15},{"type":17,"tagName":407,"properties":1522,"children":1523,"position":1546},{},[1524,1539],{"type":17,"tagName":52,"properties":1525,"children":1526,"position":1534},{},[1527],{"type":14,"value":1528,"position":1529},"Handle backpressure",{"start":1530,"end":1532},{"line":60,"column":46,"offset":1531},2924,{"line":60,"column":35,"offset":1533},2943,{"start":1535,"end":1537},{"line":60,"column":26,"offset":1536},2922,{"line":60,"column":232,"offset":1538},2945,{"type":14,"value":1540,"position":1541}," -- keep your message handler lightweight. Offload heavy processing (database writes, analytics) to a background queue.",{"start":1542,"end":1543},{"line":60,"column":232,"offset":1538},{"line":60,"column":1544,"offset":1545},145,3064,{"start":1547,"end":1549},{"line":60,"column":34,"offset":1548},2920,{"line":60,"column":1544,"offset":1545},{"type":14,"value":15},{"type":17,"tagName":407,"properties":1552,"children":1553,"position":1575},{},[1554,1569],{"type":17,"tagName":52,"properties":1555,"children":1556,"position":1564},{},[1557],{"type":14,"value":1558,"position":1559},"Track subscriptions client-side",{"start":1560,"end":1562},{"line":188,"column":46,"offset":1561},3069,{"line":188,"column":31,"offset":1563},3100,{"start":1565,"end":1567},{"line":188,"column":26,"offset":1566},3067,{"line":188,"column":47,"offset":1568},3102,{"type":14,"value":1570,"position":1571}," -- maintain a local registry of active subscriptions so you can re-subscribe after reconnection.",{"start":1572,"end":1573},{"line":188,"column":47,"offset":1568},{"line":188,"column":105,"offset":1574},3199,{"start":1576,"end":1578},{"line":188,"column":34,"offset":1577},3065,{"line":188,"column":105,"offset":1574},{"type":14,"value":15},{"type":17,"tagName":407,"properties":1581,"children":1582,"position":1658},{},[1583,1598,1604,1616,1622,1634,1640,1653],{"type":17,"tagName":52,"properties":1584,"children":1585,"position":1593},{},[1586],{"type":14,"value":1587,"position":1588},"Use compression",{"start":1589,"end":1591},{"line":142,"column":46,"offset":1590},3204,{"line":142,"column":336,"offset":1592},3219,{"start":1594,"end":1596},{"line":142,"column":26,"offset":1595},3202,{"line":142,"column":636,"offset":1597},3221,{"type":14,"value":1599,"position":1600}," -- enable ",{"start":1601,"end":1602},{"line":142,"column":636,"offset":1597},{"line":142,"column":67,"offset":1603},3232,{"type":17,"tagName":1430,"properties":1605,"children":1606,"position":1613},{},[1607],{"type":14,"value":1608,"position":1609},"brotli",{"start":1610,"end":1611},{"line":142,"column":67,"offset":1603},{"line":142,"column":177,"offset":1612},3240,{"start":1614,"end":1615},{"line":142,"column":67,"offset":1603},{"line":142,"column":177,"offset":1612},{"type":14,"value":1617,"position":1618}," compression to reduce bandwidth, especially for high-frequency channels like ",{"start":1619,"end":1620},{"line":142,"column":177,"offset":1612},{"line":142,"column":1036,"offset":1621},3318,{"type":17,"tagName":1430,"properties":1623,"children":1624,"position":1631},{},[1625],{"type":14,"value":1626,"position":1627},"TRADE",{"start":1628,"end":1629},{"line":142,"column":1036,"offset":1621},{"line":142,"column":92,"offset":1630},3325,{"start":1632,"end":1633},{"line":142,"column":1036,"offset":1621},{"line":142,"column":92,"offset":1630},{"type":14,"value":1635,"position":1636}," and ",{"start":1637,"end":1638},{"line":142,"column":92,"offset":1630},{"line":142,"column":102,"offset":1639},3330,{"type":17,"tagName":1430,"properties":1641,"children":1642,"position":1650},{},[1643],{"type":14,"value":1644,"position":1645},"BLOCK_BOOK_SNAPSHOT",{"start":1646,"end":1647},{"line":142,"column":102,"offset":1639},{"line":142,"column":1648,"offset":1649},152,3351,{"start":1651,"end":1652},{"line":142,"column":102,"offset":1639},{"line":142,"column":1648,"offset":1649},{"type":14,"value":797,"position":1654},{"start":1655,"end":1656},{"line":142,"column":1648,"offset":1649},{"line":142,"column":116,"offset":1657},3352,{"start":1659,"end":1661},{"line":142,"column":34,"offset":1660},3200,{"line":142,"column":116,"offset":1657},{"type":14,"value":15},{"start":1664,"end":1665},{"line":50,"column":34,"offset":1471},{"line":142,"column":116,"offset":1657},{"quirksMode":1667},false,{"start":1669,"end":1671},{"line":34,"column":34,"offset":1670},0,{"line":142,"column":116,"offset":1657},1781011092917]