[{"data":1,"prerenderedAt":2518},["ShallowReactive",2],{"docs:/docs/api-reference/websocket":3},{"id":4,"title":5,"body":6,"description":2510,"extension":2511,"meta":2512,"navigation":2513,"path":2514,"seo":2515,"stem":2516,"__hash__":2517},"docs/docs/api-reference/websocket.md","WebSocket API Reference",{"type":7,"value":8,"toc":2470},"minimark",[9,13,17,22,69,73,81,270,345,349,354,357,444,573,577,580,615,619,622,708,814,818,821,867,871,874,929,933,936,971,975,982,1018,1022,1027,1070,1074,1077,1113,1117,1120,1154,1158,1161,1195,1199,1203,1206,1298,1371,1375,1378,1423,1427,1430,1464,1468,1471,1517,1520,1523,1608,1624,1628,1635,1720,1724,1727,1801,1805,1808,1842,1846,1849,1930,1934,1940,2001,2005,2008,2066,2070,2073,2109,2113,2120,2171,2175,2178,2235,2239,2242,2278,2282,2334,2338,2349,2353,2402,2406,2443,2446,2450,2466],[10,11,5],"h1",{"id":12},"websocket-api-reference",[14,15,16],"p",{},"Low-level WebSocket protocol reference for NoLag real-time communication. All messages use MessagePack binary encoding.",[18,19,21],"h2",{"id":20},"connection","Connection",[23,24,25,38],"table",{},[26,27,28],"thead",{},[29,30,31,35],"tr",{},[32,33,34],"th",{},"Property",[32,36,37],{},"Value",[39,40,41,53,61],"tbody",{},[29,42,43,47],{},[44,45,46],"td",{},"Endpoint",[44,48,49],{},[50,51,52],"code",{},"wss://broker.nolag.app/ws",[29,54,55,58],{},[44,56,57],{},"Encoding",[44,59,60],{},"MessagePack binary frames",[29,62,63,66],{},[44,64,65],{},"Heartbeat",[44,67,68],{},"Empty binary packet (0 bytes) every 30 seconds, both directions",[18,70,72],{"id":71},"authentication","Authentication",[14,74,75,76,80],{},"The first message sent after connecting must be an authentication request. The server enforces a ",[77,78,79],"strong",{},"10-second timeout"," for the auth response. If no valid auth message is received within that window, the connection is closed.",[82,83,84,163,226],"code-tabs",{},[85,86,92],"pre",{"className":87,"code":88,"filename":89,"language":90,"meta":91,"style":91},"language-json shiki shiki-themes github-light github-dark","{\n  \"type\": \"auth\",\n  \"token\": \"at_live_\u003Ckey_id>.\u003Csecret>\",\n  \"reconnect\": false,\n  \"projectId\": \"...\"\n}\n","Request","json","",[50,93,94,103,120,133,146,157],{"__ignoreMap":91},[95,96,99],"span",{"class":97,"line":98},"line",1,[95,100,102],{"class":101},"sVt8B","{\n",[95,104,106,110,113,117],{"class":97,"line":105},2,[95,107,109],{"class":108},"sj4cs","  \"type\"",[95,111,112],{"class":101},": ",[95,114,116],{"class":115},"sZZnC","\"auth\"",[95,118,119],{"class":101},",\n",[95,121,123,126,128,131],{"class":97,"line":122},3,[95,124,125],{"class":108},"  \"token\"",[95,127,112],{"class":101},[95,129,130],{"class":115},"\"at_live_\u003Ckey_id>.\u003Csecret>\"",[95,132,119],{"class":101},[95,134,136,139,141,144],{"class":97,"line":135},4,[95,137,138],{"class":108},"  \"reconnect\"",[95,140,112],{"class":101},[95,142,143],{"class":108},"false",[95,145,119],{"class":101},[95,147,149,152,154],{"class":97,"line":148},5,[95,150,151],{"class":108},"  \"projectId\"",[95,153,112],{"class":101},[95,155,156],{"class":115},"\"...\"\n",[95,158,160],{"class":97,"line":159},6,[95,161,162],{"class":101},"}\n",[85,164,167],{"className":87,"code":165,"filename":166,"language":90,"meta":91,"style":91},"{\n  \"type\": \"auth\",\n  \"success\": true,\n  \"actorTokenId\": \"...\",\n  \"restoredSubscriptions\": [...]\n}\n","Response (success)",[50,168,169,173,183,195,207,222],{"__ignoreMap":91},[95,170,171],{"class":97,"line":98},[95,172,102],{"class":101},[95,174,175,177,179,181],{"class":97,"line":105},[95,176,109],{"class":108},[95,178,112],{"class":101},[95,180,116],{"class":115},[95,182,119],{"class":101},[95,184,185,188,190,193],{"class":97,"line":122},[95,186,187],{"class":108},"  \"success\"",[95,189,112],{"class":101},[95,191,192],{"class":108},"true",[95,194,119],{"class":101},[95,196,197,200,202,205],{"class":97,"line":135},[95,198,199],{"class":108},"  \"actorTokenId\"",[95,201,112],{"class":101},[95,203,204],{"class":115},"\"...\"",[95,206,119],{"class":101},[95,208,209,212,215,219],{"class":97,"line":148},[95,210,211],{"class":108},"  \"restoredSubscriptions\"",[95,213,214],{"class":101},": [",[95,216,218],{"class":217},"s7hpK","...",[95,220,221],{"class":101},"]\n",[95,223,224],{"class":97,"line":159},[95,225,162],{"class":101},[85,227,230],{"className":87,"code":228,"filename":229,"language":90,"meta":91,"style":91},"{\n  \"type\": \"auth\",\n  \"success\": false,\n  \"error\": \"invalid_token\"\n}\n","Response (failure)",[50,231,232,236,246,256,266],{"__ignoreMap":91},[95,233,234],{"class":97,"line":98},[95,235,102],{"class":101},[95,237,238,240,242,244],{"class":97,"line":105},[95,239,109],{"class":108},[95,241,112],{"class":101},[95,243,116],{"class":115},[95,245,119],{"class":101},[95,247,248,250,252,254],{"class":97,"line":122},[95,249,187],{"class":108},[95,251,112],{"class":101},[95,253,143],{"class":108},[95,255,119],{"class":101},[95,257,258,261,263],{"class":97,"line":135},[95,259,260],{"class":108},"  \"error\"",[95,262,112],{"class":101},[95,264,265],{"class":115},"\"invalid_token\"\n",[95,267,268],{"class":97,"line":148},[95,269,162],{"class":101},[23,271,272,285],{},[26,273,274],{},[29,275,276,279,282],{},[32,277,278],{},"Field",[32,280,281],{},"Type",[32,283,284],{},"Description",[39,286,287,302,317,333],{},[29,288,289,294,297],{},[44,290,291],{},[50,292,293],{},"type",[44,295,296],{},"string",[44,298,299,300],{},"Always ",[50,301,116],{},[29,303,304,309,311],{},[44,305,306],{},[50,307,308],{},"token",[44,310,296],{},[44,312,313,314],{},"Access token in the format ",[50,315,316],{},"at_live_\u003Ckey_id>.\u003Csecret>",[29,318,319,324,327],{},[44,320,321],{},[50,322,323],{},"reconnect",[44,325,326],{},"boolean",[44,328,329,330,332],{},"Set to ",[50,331,192],{}," to trigger subscription restoration after a reconnect",[29,334,335,340,342],{},[44,336,337],{},[50,338,339],{},"projectId",[44,341,296],{},[44,343,344],{},"The project identifier",[18,346,348],{"id":347},"client-to-server-messages","Client to Server Messages",[350,351,353],"h3",{"id":352},"_1-subscribe","1. subscribe",[14,355,356],{},"Subscribe to a topic to begin receiving messages.",[82,358,359],{},[85,360,363],{"className":87,"code":361,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"subscribe\",\n  \"topic\": \"app/room/topic\",\n  \"qos\": 1,\n  \"filters\": [\"f1\"],\n  \"loadBalance\": false,\n  \"loadBalanceGroup\": \"group-1\"\n}\n","JSON",[50,364,365,369,380,392,404,417,428,439],{"__ignoreMap":91},[95,366,367],{"class":97,"line":98},[95,368,102],{"class":101},[95,370,371,373,375,378],{"class":97,"line":105},[95,372,109],{"class":108},[95,374,112],{"class":101},[95,376,377],{"class":115},"\"subscribe\"",[95,379,119],{"class":101},[95,381,382,385,387,390],{"class":97,"line":122},[95,383,384],{"class":108},"  \"topic\"",[95,386,112],{"class":101},[95,388,389],{"class":115},"\"app/room/topic\"",[95,391,119],{"class":101},[95,393,394,397,399,402],{"class":97,"line":135},[95,395,396],{"class":108},"  \"qos\"",[95,398,112],{"class":101},[95,400,401],{"class":108},"1",[95,403,119],{"class":101},[95,405,406,409,411,414],{"class":97,"line":148},[95,407,408],{"class":108},"  \"filters\"",[95,410,214],{"class":101},[95,412,413],{"class":115},"\"f1\"",[95,415,416],{"class":101},"],\n",[95,418,419,422,424,426],{"class":97,"line":159},[95,420,421],{"class":108},"  \"loadBalance\"",[95,423,112],{"class":101},[95,425,143],{"class":108},[95,427,119],{"class":101},[95,429,431,434,436],{"class":97,"line":430},7,[95,432,433],{"class":108},"  \"loadBalanceGroup\"",[95,435,112],{"class":101},[95,437,438],{"class":115},"\"group-1\"\n",[95,440,442],{"class":97,"line":441},8,[95,443,162],{"class":101},[23,445,446,459],{},[26,447,448],{},[29,449,450,452,454,457],{},[32,451,278],{},[32,453,281],{},[32,455,456],{},"Required",[32,458,284],{},[39,460,461,476,493,519,545,559],{},[29,462,463,467,469,472],{},[44,464,465],{},[50,466,293],{},[44,468,296],{},[44,470,471],{},"Yes",[44,473,299,474],{},[50,475,377],{},[29,477,478,483,485,487],{},[44,479,480],{},[50,481,482],{},"topic",[44,484,296],{},[44,486,471],{},[44,488,489,490],{},"Human-readable slug format: ",[50,491,492],{},"app/room/topic",[29,494,495,500,503,506],{},[44,496,497],{},[50,498,499],{},"qos",[44,501,502],{},"number",[44,504,505],{},"No",[44,507,508,509,512,513,515,516],{},"Quality of Service level: ",[50,510,511],{},"0",", ",[50,514,401],{}," (default), or ",[50,517,518],{},"2",[29,520,521,526,530,532],{},[44,522,523],{},[50,524,525],{},"filters",[44,527,296,528],{},[95,529],{},[44,531,505],{},[44,533,534,535,512,538,512,541,544],{},"Filter array. Max 100 entries. Characters ",[50,536,537],{},"/",[50,539,540],{},"#",[50,542,543],{},"+"," are not allowed.",[29,546,547,552,554,556],{},[44,548,549],{},[50,550,551],{},"loadBalance",[44,553,326],{},[44,555,505],{},[44,557,558],{},"Enable load balancing to distribute messages across clients",[29,560,561,566,568,570],{},[44,562,563],{},[50,564,565],{},"loadBalanceGroup",[44,567,296],{},[44,569,505],{},[44,571,572],{},"Group name for load balancing",[350,574,576],{"id":575},"_2-unsubscribe","2. unsubscribe",[14,578,579],{},"Stop receiving messages from a topic.",[82,581,582],{},[85,583,585],{"className":87,"code":584,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"unsubscribe\",\n  \"topic\": \"app/room/topic\"\n}\n",[50,586,587,591,602,611],{"__ignoreMap":91},[95,588,589],{"class":97,"line":98},[95,590,102],{"class":101},[95,592,593,595,597,600],{"class":97,"line":105},[95,594,109],{"class":108},[95,596,112],{"class":101},[95,598,599],{"class":115},"\"unsubscribe\"",[95,601,119],{"class":101},[95,603,604,606,608],{"class":97,"line":122},[95,605,384],{"class":108},[95,607,112],{"class":101},[95,609,610],{"class":115},"\"app/room/topic\"\n",[95,612,613],{"class":97,"line":135},[95,614,162],{"class":101},[350,616,618],{"id":617},"_3-publish","3. publish",[14,620,621],{},"Publish a message to a topic.",[82,623,624],{},[85,625,627],{"className":87,"code":626,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"publish\",\n  \"topic\": \"app/room/topic\",\n  \"data\": { \"your\": \"payload\" },\n  \"qos\": 1,\n  \"echo\": true,\n  \"filter\": \"f1\"\n}\n",[50,628,629,633,644,654,673,683,694,704],{"__ignoreMap":91},[95,630,631],{"class":97,"line":98},[95,632,102],{"class":101},[95,634,635,637,639,642],{"class":97,"line":105},[95,636,109],{"class":108},[95,638,112],{"class":101},[95,640,641],{"class":115},"\"publish\"",[95,643,119],{"class":101},[95,645,646,648,650,652],{"class":97,"line":122},[95,647,384],{"class":108},[95,649,112],{"class":101},[95,651,389],{"class":115},[95,653,119],{"class":101},[95,655,656,659,662,665,667,670],{"class":97,"line":135},[95,657,658],{"class":108},"  \"data\"",[95,660,661],{"class":101},": { ",[95,663,664],{"class":108},"\"your\"",[95,666,112],{"class":101},[95,668,669],{"class":115},"\"payload\"",[95,671,672],{"class":101}," },\n",[95,674,675,677,679,681],{"class":97,"line":148},[95,676,396],{"class":108},[95,678,112],{"class":101},[95,680,401],{"class":108},[95,682,119],{"class":101},[95,684,685,688,690,692],{"class":97,"line":159},[95,686,687],{"class":108},"  \"echo\"",[95,689,112],{"class":101},[95,691,192],{"class":108},[95,693,119],{"class":101},[95,695,696,699,701],{"class":97,"line":430},[95,697,698],{"class":108},"  \"filter\"",[95,700,112],{"class":101},[95,702,703],{"class":115},"\"f1\"\n",[95,705,706],{"class":97,"line":441},[95,707,162],{"class":101},[23,709,710,722],{},[26,711,712],{},[29,713,714,716,718,720],{},[32,715,278],{},[32,717,281],{},[32,719,456],{},[32,721,284],{},[39,723,724,738,751,766,784,800],{},[29,725,726,730,732,734],{},[44,727,728],{},[50,729,293],{},[44,731,296],{},[44,733,471],{},[44,735,299,736],{},[50,737,641],{},[29,739,740,744,746,748],{},[44,741,742],{},[50,743,482],{},[44,745,296],{},[44,747,471],{},[44,749,750],{},"Target topic in slug format",[29,752,753,758,761,763],{},[44,754,755],{},[50,756,757],{},"data",[44,759,760],{},"object",[44,762,471],{},[44,764,765],{},"The message payload",[29,767,768,772,774,776],{},[44,769,770],{},[50,771,499],{},[44,773,502],{},[44,775,505],{},[44,777,508,778,512,780,515,782],{},[50,779,511],{},[50,781,401],{},[50,783,518],{},[29,785,786,791,793,795],{},[44,787,788],{},[50,789,790],{},"echo",[44,792,326],{},[44,794,505],{},[44,796,329,797,799],{},[50,798,143],{}," to prevent the message from being delivered back to the sender",[29,801,802,807,809,811],{},[44,803,804],{},[50,805,806],{},"filter",[44,808,296],{},[44,810,505],{},[44,812,813],{},"Route the message only to subscribers whose filter set includes this value",[350,815,817],{"id":816},"_4-setfilters","4. setFilters",[14,819,820],{},"Replace the entire filter set for a subscription. Sending an empty array acts as a wildcard, meaning all messages will be received.",[82,822,823],{},[85,824,826],{"className":87,"code":825,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"setFilters\",\n  \"topic\": \"app/room/topic\",\n  \"filters\": [\"f1\"]\n}\n",[50,827,828,832,843,853,863],{"__ignoreMap":91},[95,829,830],{"class":97,"line":98},[95,831,102],{"class":101},[95,833,834,836,838,841],{"class":97,"line":105},[95,835,109],{"class":108},[95,837,112],{"class":101},[95,839,840],{"class":115},"\"setFilters\"",[95,842,119],{"class":101},[95,844,845,847,849,851],{"class":97,"line":122},[95,846,384],{"class":108},[95,848,112],{"class":101},[95,850,389],{"class":115},[95,852,119],{"class":101},[95,854,855,857,859,861],{"class":97,"line":135},[95,856,408],{"class":108},[95,858,214],{"class":101},[95,860,413],{"class":115},[95,862,221],{"class":101},[95,864,865],{"class":97,"line":148},[95,866,162],{"class":101},[350,868,870],{"id":869},"_5-presence","5. presence",[14,872,873],{},"Announce or update presence data for a room.",[82,875,876],{},[85,877,879],{"className":87,"code":878,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"presence\",\n  \"roomId\": \"room-slug\",\n  \"data\": { \"status\": \"online\" }\n}\n",[50,880,881,885,896,908,925],{"__ignoreMap":91},[95,882,883],{"class":97,"line":98},[95,884,102],{"class":101},[95,886,887,889,891,894],{"class":97,"line":105},[95,888,109],{"class":108},[95,890,112],{"class":101},[95,892,893],{"class":115},"\"presence\"",[95,895,119],{"class":101},[95,897,898,901,903,906],{"class":97,"line":122},[95,899,900],{"class":108},"  \"roomId\"",[95,902,112],{"class":101},[95,904,905],{"class":115},"\"room-slug\"",[95,907,119],{"class":101},[95,909,910,912,914,917,919,922],{"class":97,"line":135},[95,911,658],{"class":108},[95,913,661],{"class":101},[95,915,916],{"class":108},"\"status\"",[95,918,112],{"class":101},[95,920,921],{"class":115},"\"online\"",[95,923,924],{"class":101}," }\n",[95,926,927],{"class":97,"line":148},[95,928,162],{"class":101},[350,930,932],{"id":931},"_6-getpresence","6. getPresence",[14,934,935],{},"Request the current presence list for a room.",[82,937,938],{},[85,939,941],{"className":87,"code":940,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"getPresence\",\n  \"roomId\": \"room-slug\"\n}\n",[50,942,943,947,958,967],{"__ignoreMap":91},[95,944,945],{"class":97,"line":98},[95,946,102],{"class":101},[95,948,949,951,953,956],{"class":97,"line":105},[95,950,109],{"class":108},[95,952,112],{"class":101},[95,954,955],{"class":115},"\"getPresence\"",[95,957,119],{"class":101},[95,959,960,962,964],{"class":97,"line":122},[95,961,900],{"class":108},[95,963,112],{"class":101},[95,965,966],{"class":115},"\"room-slug\"\n",[95,968,969],{"class":97,"line":135},[95,970,162],{"class":101},[350,972,974],{"id":973},"_7-ack","7. ack",[14,976,977,978,981],{},"Acknowledge receipt of a single message. Required when the server sends a message with ",[50,979,980],{},"requiresAck: true",".",[82,983,984],{},[85,985,987],{"className":87,"code":986,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"ack\",\n  \"msgId\": \"uuid\"\n}\n",[50,988,989,993,1004,1014],{"__ignoreMap":91},[95,990,991],{"class":97,"line":98},[95,992,102],{"class":101},[95,994,995,997,999,1002],{"class":97,"line":105},[95,996,109],{"class":108},[95,998,112],{"class":101},[95,1000,1001],{"class":115},"\"ack\"",[95,1003,119],{"class":101},[95,1005,1006,1009,1011],{"class":97,"line":122},[95,1007,1008],{"class":108},"  \"msgId\"",[95,1010,112],{"class":101},[95,1012,1013],{"class":115},"\"uuid\"\n",[95,1015,1016],{"class":97,"line":135},[95,1017,162],{"class":101},[350,1019,1021],{"id":1020},"_8-batchack","8. batchAck",[14,1023,1024,1025,981],{},"Acknowledge receipt of multiple messages at once. Required when the server sends messages with ",[50,1026,980],{},[82,1028,1029],{},[85,1030,1032],{"className":87,"code":1031,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"batchAck\",\n  \"msgIds\": [\"id1\", \"id2\"]\n}\n",[50,1033,1034,1038,1049,1066],{"__ignoreMap":91},[95,1035,1036],{"class":97,"line":98},[95,1037,102],{"class":101},[95,1039,1040,1042,1044,1047],{"class":97,"line":105},[95,1041,109],{"class":108},[95,1043,112],{"class":101},[95,1045,1046],{"class":115},"\"batchAck\"",[95,1048,119],{"class":101},[95,1050,1051,1054,1056,1059,1061,1064],{"class":97,"line":122},[95,1052,1053],{"class":108},"  \"msgIds\"",[95,1055,214],{"class":101},[95,1057,1058],{"class":115},"\"id1\"",[95,1060,512],{"class":101},[95,1062,1063],{"class":115},"\"id2\"",[95,1065,221],{"class":101},[95,1067,1068],{"class":97,"line":135},[95,1069,162],{"class":101},[350,1071,1073],{"id":1072},"_9-lobbysubscribe","9. lobbySubscribe",[14,1075,1076],{},"Subscribe to a lobby to receive aggregated presence events across multiple rooms.",[82,1078,1079],{},[85,1080,1082],{"className":87,"code":1081,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbySubscribe\",\n  \"lobbyId\": \"lobby-slug\"\n}\n",[50,1083,1084,1088,1099,1109],{"__ignoreMap":91},[95,1085,1086],{"class":97,"line":98},[95,1087,102],{"class":101},[95,1089,1090,1092,1094,1097],{"class":97,"line":105},[95,1091,109],{"class":108},[95,1093,112],{"class":101},[95,1095,1096],{"class":115},"\"lobbySubscribe\"",[95,1098,119],{"class":101},[95,1100,1101,1104,1106],{"class":97,"line":122},[95,1102,1103],{"class":108},"  \"lobbyId\"",[95,1105,112],{"class":101},[95,1107,1108],{"class":115},"\"lobby-slug\"\n",[95,1110,1111],{"class":97,"line":135},[95,1112,162],{"class":101},[350,1114,1116],{"id":1115},"_10-lobbyunsubscribe","10. lobbyUnsubscribe",[14,1118,1119],{},"Unsubscribe from a lobby.",[82,1121,1122],{},[85,1123,1125],{"className":87,"code":1124,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbyUnsubscribe\",\n  \"lobbyId\": \"lobby-slug\"\n}\n",[50,1126,1127,1131,1142,1150],{"__ignoreMap":91},[95,1128,1129],{"class":97,"line":98},[95,1130,102],{"class":101},[95,1132,1133,1135,1137,1140],{"class":97,"line":105},[95,1134,109],{"class":108},[95,1136,112],{"class":101},[95,1138,1139],{"class":115},"\"lobbyUnsubscribe\"",[95,1141,119],{"class":101},[95,1143,1144,1146,1148],{"class":97,"line":122},[95,1145,1103],{"class":108},[95,1147,112],{"class":101},[95,1149,1108],{"class":115},[95,1151,1152],{"class":97,"line":135},[95,1153,162],{"class":101},[350,1155,1157],{"id":1156},"_11-getlobbypresence","11. getLobbyPresence",[14,1159,1160],{},"Request the current presence data for an entire lobby.",[82,1162,1163],{},[85,1164,1166],{"className":87,"code":1165,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"getLobbyPresence\",\n  \"lobbyId\": \"lobby-slug\"\n}\n",[50,1167,1168,1172,1183,1191],{"__ignoreMap":91},[95,1169,1170],{"class":97,"line":98},[95,1171,102],{"class":101},[95,1173,1174,1176,1178,1181],{"class":97,"line":105},[95,1175,109],{"class":108},[95,1177,112],{"class":101},[95,1179,1180],{"class":115},"\"getLobbyPresence\"",[95,1182,119],{"class":101},[95,1184,1185,1187,1189],{"class":97,"line":122},[95,1186,1103],{"class":108},[95,1188,112],{"class":101},[95,1190,1108],{"class":115},[95,1192,1193],{"class":97,"line":135},[95,1194,162],{"class":101},[18,1196,1198],{"id":1197},"server-to-client-messages","Server to Client Messages",[350,1200,1202],{"id":1201},"_1-message","1. message",[14,1204,1205],{},"Delivers a published message to the client.",[82,1207,1208],{},[85,1209,1211],{"className":87,"code":1210,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"message\",\n  \"topic\": \"...\",\n  \"data\": { \"your\": \"payload\" },\n  \"msgId\": \"uuid\",\n  \"requiresAck\": true,\n  \"isReplay\": false,\n  \"filter\": \"f1\"\n}\n",[50,1212,1213,1217,1228,1238,1252,1263,1274,1285,1293],{"__ignoreMap":91},[95,1214,1215],{"class":97,"line":98},[95,1216,102],{"class":101},[95,1218,1219,1221,1223,1226],{"class":97,"line":105},[95,1220,109],{"class":108},[95,1222,112],{"class":101},[95,1224,1225],{"class":115},"\"message\"",[95,1227,119],{"class":101},[95,1229,1230,1232,1234,1236],{"class":97,"line":122},[95,1231,384],{"class":108},[95,1233,112],{"class":101},[95,1235,204],{"class":115},[95,1237,119],{"class":101},[95,1239,1240,1242,1244,1246,1248,1250],{"class":97,"line":135},[95,1241,658],{"class":108},[95,1243,661],{"class":101},[95,1245,664],{"class":108},[95,1247,112],{"class":101},[95,1249,669],{"class":115},[95,1251,672],{"class":101},[95,1253,1254,1256,1258,1261],{"class":97,"line":148},[95,1255,1008],{"class":108},[95,1257,112],{"class":101},[95,1259,1260],{"class":115},"\"uuid\"",[95,1262,119],{"class":101},[95,1264,1265,1268,1270,1272],{"class":97,"line":159},[95,1266,1267],{"class":108},"  \"requiresAck\"",[95,1269,112],{"class":101},[95,1271,192],{"class":108},[95,1273,119],{"class":101},[95,1275,1276,1279,1281,1283],{"class":97,"line":430},[95,1277,1278],{"class":108},"  \"isReplay\"",[95,1280,112],{"class":101},[95,1282,143],{"class":108},[95,1284,119],{"class":101},[95,1286,1287,1289,1291],{"class":97,"line":441},[95,1288,698],{"class":108},[95,1290,112],{"class":101},[95,1292,703],{"class":115},[95,1294,1296],{"class":97,"line":1295},9,[95,1297,162],{"class":101},[23,1299,1300,1310],{},[26,1301,1302],{},[29,1303,1304,1306,1308],{},[32,1305,278],{},[32,1307,281],{},[32,1309,284],{},[39,1311,1312,1324,1346,1360],{},[29,1313,1314,1319,1321],{},[44,1315,1316],{},[50,1317,1318],{},"msgId",[44,1320,296],{},[44,1322,1323],{},"Present when message logging is enabled on the topic",[29,1325,1326,1331,1333],{},[44,1327,1328],{},[50,1329,1330],{},"requiresAck",[44,1332,326],{},[44,1334,1335,1336,1338,1339,1342,1343],{},"When ",[50,1337,192],{},", the client must respond with an ",[50,1340,1341],{},"ack"," or ",[50,1344,1345],{},"batchAck",[29,1347,1348,1353,1355],{},[44,1349,1350],{},[50,1351,1352],{},"isReplay",[44,1354,326],{},[44,1356,329,1357,1359],{},[50,1358,192],{}," when the message is being replayed after a reconnect",[29,1361,1362,1366,1368],{},[44,1363,1364],{},[50,1365,806],{},[44,1367,296],{},[44,1369,1370],{},"The filter value the message was published with",[350,1372,1374],{"id":1373},"_2-subscribed","2. subscribed",[14,1376,1377],{},"Confirms a successful subscription.",[82,1379,1380],{},[85,1381,1383],{"className":87,"code":1382,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"subscribed\",\n  \"topic\": \"...\",\n  \"loadBalance\": false\n}\n",[50,1384,1385,1389,1400,1410,1419],{"__ignoreMap":91},[95,1386,1387],{"class":97,"line":98},[95,1388,102],{"class":101},[95,1390,1391,1393,1395,1398],{"class":97,"line":105},[95,1392,109],{"class":108},[95,1394,112],{"class":101},[95,1396,1397],{"class":115},"\"subscribed\"",[95,1399,119],{"class":101},[95,1401,1402,1404,1406,1408],{"class":97,"line":122},[95,1403,384],{"class":108},[95,1405,112],{"class":101},[95,1407,204],{"class":115},[95,1409,119],{"class":101},[95,1411,1412,1414,1416],{"class":97,"line":135},[95,1413,421],{"class":108},[95,1415,112],{"class":101},[95,1417,1418],{"class":108},"false\n",[95,1420,1421],{"class":97,"line":148},[95,1422,162],{"class":101},[350,1424,1426],{"id":1425},"_3-unsubscribed","3. unsubscribed",[14,1428,1429],{},"Confirms a successful unsubscription.",[82,1431,1432],{},[85,1433,1435],{"className":87,"code":1434,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"unsubscribed\",\n  \"topic\": \"...\"\n}\n",[50,1436,1437,1441,1452,1460],{"__ignoreMap":91},[95,1438,1439],{"class":97,"line":98},[95,1440,102],{"class":101},[95,1442,1443,1445,1447,1450],{"class":97,"line":105},[95,1444,109],{"class":108},[95,1446,112],{"class":101},[95,1448,1449],{"class":115},"\"unsubscribed\"",[95,1451,119],{"class":101},[95,1453,1454,1456,1458],{"class":97,"line":122},[95,1455,384],{"class":108},[95,1457,112],{"class":101},[95,1459,156],{"class":115},[95,1461,1462],{"class":97,"line":135},[95,1463,162],{"class":101},[350,1465,1467],{"id":1466},"_4-filtersupdated","4. filtersUpdated",[14,1469,1470],{},"Confirms that the filter set for a subscription has been updated.",[82,1472,1473],{},[85,1474,1476],{"className":87,"code":1475,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"filtersUpdated\",\n  \"topic\": \"...\",\n  \"filters\": [\"f1\"]\n}\n",[50,1477,1478,1482,1493,1503,1513],{"__ignoreMap":91},[95,1479,1480],{"class":97,"line":98},[95,1481,102],{"class":101},[95,1483,1484,1486,1488,1491],{"class":97,"line":105},[95,1485,109],{"class":108},[95,1487,112],{"class":101},[95,1489,1490],{"class":115},"\"filtersUpdated\"",[95,1492,119],{"class":101},[95,1494,1495,1497,1499,1501],{"class":97,"line":122},[95,1496,384],{"class":108},[95,1498,112],{"class":101},[95,1500,204],{"class":115},[95,1502,119],{"class":101},[95,1504,1505,1507,1509,1511],{"class":97,"line":135},[95,1506,408],{"class":108},[95,1508,214],{"class":101},[95,1510,413],{"class":115},[95,1512,221],{"class":101},[95,1514,1515],{"class":97,"line":148},[95,1516,162],{"class":101},[350,1518,870],{"id":1519},"_5-presence-1",[14,1521,1522],{},"Notifies the client of a presence change in a room (join, leave, or update).",[82,1524,1525],{},[85,1526,1528],{"className":87,"code":1527,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"presence\",\n  \"event\": \"join\",\n  \"data\": {\n    \"actorTokenId\": \"...\",\n    \"presence\": { \"status\": \"online\" },\n    \"joinedAt\": 1716000000\n  }\n}\n",[50,1529,1530,1534,1544,1556,1563,1574,1589,1599,1604],{"__ignoreMap":91},[95,1531,1532],{"class":97,"line":98},[95,1533,102],{"class":101},[95,1535,1536,1538,1540,1542],{"class":97,"line":105},[95,1537,109],{"class":108},[95,1539,112],{"class":101},[95,1541,893],{"class":115},[95,1543,119],{"class":101},[95,1545,1546,1549,1551,1554],{"class":97,"line":122},[95,1547,1548],{"class":108},"  \"event\"",[95,1550,112],{"class":101},[95,1552,1553],{"class":115},"\"join\"",[95,1555,119],{"class":101},[95,1557,1558,1560],{"class":97,"line":135},[95,1559,658],{"class":108},[95,1561,1562],{"class":101},": {\n",[95,1564,1565,1568,1570,1572],{"class":97,"line":148},[95,1566,1567],{"class":108},"    \"actorTokenId\"",[95,1569,112],{"class":101},[95,1571,204],{"class":115},[95,1573,119],{"class":101},[95,1575,1576,1579,1581,1583,1585,1587],{"class":97,"line":159},[95,1577,1578],{"class":108},"    \"presence\"",[95,1580,661],{"class":101},[95,1582,916],{"class":108},[95,1584,112],{"class":101},[95,1586,921],{"class":115},[95,1588,672],{"class":101},[95,1590,1591,1594,1596],{"class":97,"line":430},[95,1592,1593],{"class":108},"    \"joinedAt\"",[95,1595,112],{"class":101},[95,1597,1598],{"class":108},"1716000000\n",[95,1600,1601],{"class":97,"line":441},[95,1602,1603],{"class":101},"  }\n",[95,1605,1606],{"class":97,"line":1295},[95,1607,162],{"class":101},[14,1609,1610,1611,1614,1615,512,1617,1620,1621,981],{},"The ",[50,1612,1613],{},"event"," field is one of: ",[50,1616,1553],{},[50,1618,1619],{},"\"leave\"",", or ",[50,1622,1623],{},"\"update\"",[350,1625,1627],{"id":1626},"_6-presencelist","6. presenceList",[14,1629,1630,1631,1634],{},"Returns the full list of present actors in a room. Sent in response to a ",[50,1632,1633],{},"getPresence"," request.",[82,1636,1637],{},[85,1638,1640],{"className":87,"code":1639,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"presenceList\",\n  \"roomId\": \"...\",\n  \"data\": [\n    { \"actorTokenId\": \"...\", \"presence\": { \"status\": \"online\" }, \"joinedAt\": 1716000000 }\n  ]\n}\n",[50,1641,1642,1646,1657,1667,1674,1711,1716],{"__ignoreMap":91},[95,1643,1644],{"class":97,"line":98},[95,1645,102],{"class":101},[95,1647,1648,1650,1652,1655],{"class":97,"line":105},[95,1649,109],{"class":108},[95,1651,112],{"class":101},[95,1653,1654],{"class":115},"\"presenceList\"",[95,1656,119],{"class":101},[95,1658,1659,1661,1663,1665],{"class":97,"line":122},[95,1660,900],{"class":108},[95,1662,112],{"class":101},[95,1664,204],{"class":115},[95,1666,119],{"class":101},[95,1668,1669,1671],{"class":97,"line":135},[95,1670,658],{"class":108},[95,1672,1673],{"class":101},": [\n",[95,1675,1676,1679,1682,1684,1686,1688,1690,1692,1694,1696,1698,1701,1704,1706,1709],{"class":97,"line":148},[95,1677,1678],{"class":101},"    { ",[95,1680,1681],{"class":108},"\"actorTokenId\"",[95,1683,112],{"class":101},[95,1685,204],{"class":115},[95,1687,512],{"class":101},[95,1689,893],{"class":108},[95,1691,661],{"class":101},[95,1693,916],{"class":108},[95,1695,112],{"class":101},[95,1697,921],{"class":115},[95,1699,1700],{"class":101}," }, ",[95,1702,1703],{"class":108},"\"joinedAt\"",[95,1705,112],{"class":101},[95,1707,1708],{"class":108},"1716000000",[95,1710,924],{"class":101},[95,1712,1713],{"class":97,"line":159},[95,1714,1715],{"class":101},"  ]\n",[95,1717,1718],{"class":97,"line":430},[95,1719,162],{"class":101},[350,1721,1723],{"id":1722},"_7-lobbysubscribed","7. lobbySubscribed",[14,1725,1726],{},"Confirms a lobby subscription and includes the current presence snapshot.",[82,1728,1729],{},[85,1730,1732],{"className":87,"code":1731,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbySubscribed\",\n  \"lobbyId\": \"...\",\n  \"presence\": {\n    \"room1\": {\n      \"actor1\": { \"status\": \"online\" }\n    }\n  }\n}\n",[50,1733,1734,1738,1749,1759,1766,1773,1788,1793,1797],{"__ignoreMap":91},[95,1735,1736],{"class":97,"line":98},[95,1737,102],{"class":101},[95,1739,1740,1742,1744,1747],{"class":97,"line":105},[95,1741,109],{"class":108},[95,1743,112],{"class":101},[95,1745,1746],{"class":115},"\"lobbySubscribed\"",[95,1748,119],{"class":101},[95,1750,1751,1753,1755,1757],{"class":97,"line":122},[95,1752,1103],{"class":108},[95,1754,112],{"class":101},[95,1756,204],{"class":115},[95,1758,119],{"class":101},[95,1760,1761,1764],{"class":97,"line":135},[95,1762,1763],{"class":108},"  \"presence\"",[95,1765,1562],{"class":101},[95,1767,1768,1771],{"class":97,"line":148},[95,1769,1770],{"class":108},"    \"room1\"",[95,1772,1562],{"class":101},[95,1774,1775,1778,1780,1782,1784,1786],{"class":97,"line":159},[95,1776,1777],{"class":108},"      \"actor1\"",[95,1779,661],{"class":101},[95,1781,916],{"class":108},[95,1783,112],{"class":101},[95,1785,921],{"class":115},[95,1787,924],{"class":101},[95,1789,1790],{"class":97,"line":430},[95,1791,1792],{"class":101},"    }\n",[95,1794,1795],{"class":97,"line":441},[95,1796,1603],{"class":101},[95,1798,1799],{"class":97,"line":1295},[95,1800,162],{"class":101},[350,1802,1804],{"id":1803},"_8-lobbyunsubscribed","8. lobbyUnsubscribed",[14,1806,1807],{},"Confirms a lobby unsubscription.",[82,1809,1810],{},[85,1811,1813],{"className":87,"code":1812,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbyUnsubscribed\",\n  \"lobbyId\": \"...\"\n}\n",[50,1814,1815,1819,1830,1838],{"__ignoreMap":91},[95,1816,1817],{"class":97,"line":98},[95,1818,102],{"class":101},[95,1820,1821,1823,1825,1828],{"class":97,"line":105},[95,1822,109],{"class":108},[95,1824,112],{"class":101},[95,1826,1827],{"class":115},"\"lobbyUnsubscribed\"",[95,1829,119],{"class":101},[95,1831,1832,1834,1836],{"class":97,"line":122},[95,1833,1103],{"class":108},[95,1835,112],{"class":101},[95,1837,156],{"class":115},[95,1839,1840],{"class":97,"line":135},[95,1841,162],{"class":101},[350,1843,1845],{"id":1844},"_9-lobbypresence","9. lobbyPresence",[14,1847,1848],{},"Notifies the client of a presence event within a lobby.",[82,1850,1851],{},[85,1852,1854],{"className":87,"code":1853,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbyPresence\",\n  \"event\": \"join\",\n  \"lobbyId\": \"...\",\n  \"roomId\": \"...\",\n  \"actorId\": \"...\",\n  \"data\": { \"status\": \"online\" }\n}\n",[50,1855,1856,1860,1871,1881,1891,1901,1912,1926],{"__ignoreMap":91},[95,1857,1858],{"class":97,"line":98},[95,1859,102],{"class":101},[95,1861,1862,1864,1866,1869],{"class":97,"line":105},[95,1863,109],{"class":108},[95,1865,112],{"class":101},[95,1867,1868],{"class":115},"\"lobbyPresence\"",[95,1870,119],{"class":101},[95,1872,1873,1875,1877,1879],{"class":97,"line":122},[95,1874,1548],{"class":108},[95,1876,112],{"class":101},[95,1878,1553],{"class":115},[95,1880,119],{"class":101},[95,1882,1883,1885,1887,1889],{"class":97,"line":135},[95,1884,1103],{"class":108},[95,1886,112],{"class":101},[95,1888,204],{"class":115},[95,1890,119],{"class":101},[95,1892,1893,1895,1897,1899],{"class":97,"line":148},[95,1894,900],{"class":108},[95,1896,112],{"class":101},[95,1898,204],{"class":115},[95,1900,119],{"class":101},[95,1902,1903,1906,1908,1910],{"class":97,"line":159},[95,1904,1905],{"class":108},"  \"actorId\"",[95,1907,112],{"class":101},[95,1909,204],{"class":115},[95,1911,119],{"class":101},[95,1913,1914,1916,1918,1920,1922,1924],{"class":97,"line":430},[95,1915,658],{"class":108},[95,1917,661],{"class":101},[95,1919,916],{"class":108},[95,1921,112],{"class":101},[95,1923,921],{"class":115},[95,1925,924],{"class":101},[95,1927,1928],{"class":97,"line":441},[95,1929,162],{"class":101},[350,1931,1933],{"id":1932},"_10-lobbypresencelist","10. lobbyPresenceList",[14,1935,1936,1937,1634],{},"Returns the full presence data for a lobby. Sent in response to a ",[50,1938,1939],{},"getLobbyPresence",[82,1941,1942],{},[85,1943,1945],{"className":87,"code":1944,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"lobbyPresenceList\",\n  \"lobbyId\": \"...\",\n  \"presence\": { \"room1\": { \"actor1\": { \"status\": \"online\" } } }\n}\n",[50,1946,1947,1951,1962,1972,1997],{"__ignoreMap":91},[95,1948,1949],{"class":97,"line":98},[95,1950,102],{"class":101},[95,1952,1953,1955,1957,1960],{"class":97,"line":105},[95,1954,109],{"class":108},[95,1956,112],{"class":101},[95,1958,1959],{"class":115},"\"lobbyPresenceList\"",[95,1961,119],{"class":101},[95,1963,1964,1966,1968,1970],{"class":97,"line":122},[95,1965,1103],{"class":108},[95,1967,112],{"class":101},[95,1969,204],{"class":115},[95,1971,119],{"class":101},[95,1973,1974,1976,1978,1981,1983,1986,1988,1990,1992,1994],{"class":97,"line":135},[95,1975,1763],{"class":108},[95,1977,661],{"class":101},[95,1979,1980],{"class":108},"\"room1\"",[95,1982,661],{"class":101},[95,1984,1985],{"class":108},"\"actor1\"",[95,1987,661],{"class":101},[95,1989,916],{"class":108},[95,1991,112],{"class":101},[95,1993,921],{"class":115},[95,1995,1996],{"class":101}," } } }\n",[95,1998,1999],{"class":97,"line":148},[95,2000,162],{"class":101},[350,2002,2004],{"id":2003},"_11-replaystart","11. replayStart",[14,2006,2007],{},"Indicates the beginning of a message replay sequence after reconnection.",[82,2009,2010],{},[85,2011,2013],{"className":87,"code":2012,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"replayStart\",\n  \"count\": 247,\n  \"oldestTimestamp\": \"...\",\n  \"newestTimestamp\": \"...\"\n}\n",[50,2014,2015,2019,2030,2042,2053,2062],{"__ignoreMap":91},[95,2016,2017],{"class":97,"line":98},[95,2018,102],{"class":101},[95,2020,2021,2023,2025,2028],{"class":97,"line":105},[95,2022,109],{"class":108},[95,2024,112],{"class":101},[95,2026,2027],{"class":115},"\"replayStart\"",[95,2029,119],{"class":101},[95,2031,2032,2035,2037,2040],{"class":97,"line":122},[95,2033,2034],{"class":108},"  \"count\"",[95,2036,112],{"class":101},[95,2038,2039],{"class":108},"247",[95,2041,119],{"class":101},[95,2043,2044,2047,2049,2051],{"class":97,"line":135},[95,2045,2046],{"class":108},"  \"oldestTimestamp\"",[95,2048,112],{"class":101},[95,2050,204],{"class":115},[95,2052,119],{"class":101},[95,2054,2055,2058,2060],{"class":97,"line":148},[95,2056,2057],{"class":108},"  \"newestTimestamp\"",[95,2059,112],{"class":101},[95,2061,156],{"class":115},[95,2063,2064],{"class":97,"line":159},[95,2065,162],{"class":101},[350,2067,2069],{"id":2068},"_12-replayend","12. replayEnd",[14,2071,2072],{},"Indicates the end of a message replay sequence.",[82,2074,2075],{},[85,2076,2078],{"className":87,"code":2077,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"replayEnd\",\n  \"replayed\": 247\n}\n",[50,2079,2080,2084,2095,2105],{"__ignoreMap":91},[95,2081,2082],{"class":97,"line":98},[95,2083,102],{"class":101},[95,2085,2086,2088,2090,2093],{"class":97,"line":105},[95,2087,109],{"class":108},[95,2089,112],{"class":101},[95,2091,2092],{"class":115},"\"replayEnd\"",[95,2094,119],{"class":101},[95,2096,2097,2100,2102],{"class":97,"line":122},[95,2098,2099],{"class":108},"  \"replayed\"",[95,2101,112],{"class":101},[95,2103,2104],{"class":108},"247\n",[95,2106,2107],{"class":97,"line":135},[95,2108,162],{"class":101},[350,2110,2112],{"id":2111},"_13-hydration","13. hydration",[14,2114,2115,2116,2119],{},"Sent automatically on subscribe when a webhook is configured for that topic (via ",[50,2117,2118],{},"topicConfigs.webhooks.onSubscribe"," or the legacy app-level hydration webhook). Contains initial state data.",[82,2121,2122],{},[85,2123,2125],{"className":87,"code":2124,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"hydration\",\n  \"topic\": \"...\",\n  \"data\": { \"initialState\": \"...\" }\n}\n",[50,2126,2127,2131,2142,2152,2167],{"__ignoreMap":91},[95,2128,2129],{"class":97,"line":98},[95,2130,102],{"class":101},[95,2132,2133,2135,2137,2140],{"class":97,"line":105},[95,2134,109],{"class":108},[95,2136,112],{"class":101},[95,2138,2139],{"class":115},"\"hydration\"",[95,2141,119],{"class":101},[95,2143,2144,2146,2148,2150],{"class":97,"line":122},[95,2145,384],{"class":108},[95,2147,112],{"class":101},[95,2149,204],{"class":115},[95,2151,119],{"class":101},[95,2153,2154,2156,2158,2161,2163,2165],{"class":97,"line":135},[95,2155,658],{"class":108},[95,2157,661],{"class":101},[95,2159,2160],{"class":108},"\"initialState\"",[95,2162,112],{"class":101},[95,2164,204],{"class":115},[95,2166,924],{"class":101},[95,2168,2169],{"class":97,"line":148},[95,2170,162],{"class":101},[350,2172,2174],{"id":2173},"_14-error","14. error",[14,2176,2177],{},"Reports an error to the client.",[82,2179,2180],{},[85,2181,2183],{"className":87,"code":2182,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"error\",\n  \"error\": \"rate_limit_exceeded\",\n  \"code\": 42910,\n  \"topic\": \"...\"\n}\n",[50,2184,2185,2189,2200,2211,2223,2231],{"__ignoreMap":91},[95,2186,2187],{"class":97,"line":98},[95,2188,102],{"class":101},[95,2190,2191,2193,2195,2198],{"class":97,"line":105},[95,2192,109],{"class":108},[95,2194,112],{"class":101},[95,2196,2197],{"class":115},"\"error\"",[95,2199,119],{"class":101},[95,2201,2202,2204,2206,2209],{"class":97,"line":122},[95,2203,260],{"class":108},[95,2205,112],{"class":101},[95,2207,2208],{"class":115},"\"rate_limit_exceeded\"",[95,2210,119],{"class":101},[95,2212,2213,2216,2218,2221],{"class":97,"line":135},[95,2214,2215],{"class":108},"  \"code\"",[95,2217,112],{"class":101},[95,2219,2220],{"class":108},"42910",[95,2222,119],{"class":101},[95,2224,2225,2227,2229],{"class":97,"line":148},[95,2226,384],{"class":108},[95,2228,112],{"class":101},[95,2230,156],{"class":115},[95,2232,2233],{"class":97,"line":159},[95,2234,162],{"class":101},[350,2236,2238],{"id":2237},"_15-disconnect","15. disconnect",[14,2240,2241],{},"Informs the client that the server is closing the connection, along with the reason.",[82,2243,2244],{},[85,2245,2247],{"className":87,"code":2246,"filename":362,"language":90,"meta":91,"style":91},"{\n  \"type\": \"disconnect\",\n  \"reason\": \"token_invalid\"\n}\n",[50,2248,2249,2253,2264,2274],{"__ignoreMap":91},[95,2250,2251],{"class":97,"line":98},[95,2252,102],{"class":101},[95,2254,2255,2257,2259,2262],{"class":97,"line":105},[95,2256,109],{"class":108},[95,2258,112],{"class":101},[95,2260,2261],{"class":115},"\"disconnect\"",[95,2263,119],{"class":101},[95,2265,2266,2269,2271],{"class":97,"line":122},[95,2267,2268],{"class":108},"  \"reason\"",[95,2270,112],{"class":101},[95,2272,2273],{"class":115},"\"token_invalid\"\n",[95,2275,2276],{"class":97,"line":135},[95,2277,162],{"class":101},[18,2279,2281],{"id":2280},"qos-levels","QoS Levels",[23,2283,2284,2296],{},[26,2285,2286],{},[29,2287,2288,2291,2294],{},[32,2289,2290],{},"Level",[32,2292,2293],{},"Name",[32,2295,284],{},[39,2297,2298,2310,2322],{},[29,2299,2300,2304,2307],{},[44,2301,2302],{},[50,2303,511],{},[44,2305,2306],{},"At most once",[44,2308,2309],{},"Fire and forget. No delivery guarantee.",[29,2311,2312,2316,2319],{},[44,2313,2314],{},[50,2315,401],{},[44,2317,2318],{},"At least once",[44,2320,2321],{},"Acknowledged delivery. Messages may be delivered more than once.",[29,2323,2324,2328,2331],{},[44,2325,2326],{},[50,2327,518],{},[44,2329,2330],{},"Exactly once",[44,2332,2333],{},"Guaranteed single delivery.",[18,2335,2337],{"id":2336},"reconnection","Reconnection",[14,2339,2340,2341,2344,2345,2348],{},"When a client reconnects after a disconnect, it should send the ",[50,2342,2343],{},"auth"," message with ",[50,2346,2347],{},"reconnect: true",". The server will restore previous subscriptions and replay any messages that were missed during the disconnect.",[350,2350,2352],{"id":2351},"reconnection-flow","Reconnection flow",[2354,2355,2356,2365,2382,2389,2396],"ol",{},[2357,2358,2359,2360,2362,2363,981],"li",{},"Client reconnects and sends ",[50,2361,2343],{}," with ",[50,2364,2347],{},[2357,2366,2367,2368,2371,2372,512,2375,512,2377,2379,2380,981],{},"Server responds with ",[50,2369,2370],{},"restoredSubscriptions",", an array of objects containing: ",[50,2373,2374],{},"pattern",[50,2376,551],{},[50,2378,565],{},", and ",[50,2381,525],{},[2357,2383,2384,2385,2388],{},"Server sends a ",[50,2386,2387],{},"replayStart"," message with the total count and timestamp range.",[2357,2390,2391,2392,2395],{},"Server delivers all missed messages (with ",[50,2393,2394],{},"isReplay: true",").",[2357,2397,2384,2398,2401],{},[50,2399,2400],{},"replayEnd"," message confirming how many messages were replayed.",[350,2403,2405],{"id":2404},"backoff-strategy","Backoff strategy",[23,2407,2408,2417],{},[26,2409,2410],{},[29,2411,2412,2415],{},[32,2413,2414],{},"Parameter",[32,2416,37],{},[39,2418,2419,2427,2435],{},[29,2420,2421,2424],{},[44,2422,2423],{},"Base delay",[44,2425,2426],{},"5 seconds",[29,2428,2429,2432],{},[44,2430,2431],{},"Max delay",[44,2433,2434],{},"30 seconds",[29,2436,2437,2440],{},[44,2438,2439],{},"Multiplier",[44,2441,2442],{},"1.5x",[14,2444,2445],{},"Each failed reconnection attempt increases the delay by the multiplier, up to the maximum. For example: 5s, 7.5s, 11.25s, 16.875s, 25.3s, 30s, 30s, ...",[18,2447,2449],{"id":2448},"next-steps","Next Steps",[2451,2452,2453,2460],"ul",{},[2357,2454,2455],{},[2456,2457,2459],"a",{"href":2458},"/docs/api-reference/errors","Error Codes",[2357,2461,2462],{},[2456,2463,2465],{"href":2464},"/docs/sdks/javascript","JavaScript SDK",[2467,2468,2469],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}",{"title":91,"searchDepth":105,"depth":105,"links":2471},[2472,2473,2474,2487,2504,2505,2509],{"id":20,"depth":105,"text":21},{"id":71,"depth":105,"text":72},{"id":347,"depth":105,"text":348,"children":2475},[2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486],{"id":352,"depth":122,"text":353},{"id":575,"depth":122,"text":576},{"id":617,"depth":122,"text":618},{"id":816,"depth":122,"text":817},{"id":869,"depth":122,"text":870},{"id":931,"depth":122,"text":932},{"id":973,"depth":122,"text":974},{"id":1020,"depth":122,"text":1021},{"id":1072,"depth":122,"text":1073},{"id":1115,"depth":122,"text":1116},{"id":1156,"depth":122,"text":1157},{"id":1197,"depth":105,"text":1198,"children":2488},[2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503],{"id":1201,"depth":122,"text":1202},{"id":1373,"depth":122,"text":1374},{"id":1425,"depth":122,"text":1426},{"id":1466,"depth":122,"text":1467},{"id":1519,"depth":122,"text":870},{"id":1626,"depth":122,"text":1627},{"id":1722,"depth":122,"text":1723},{"id":1803,"depth":122,"text":1804},{"id":1844,"depth":122,"text":1845},{"id":1932,"depth":122,"text":1933},{"id":2003,"depth":122,"text":2004},{"id":2068,"depth":122,"text":2069},{"id":2111,"depth":122,"text":2112},{"id":2173,"depth":122,"text":2174},{"id":2237,"depth":122,"text":2238},{"id":2280,"depth":105,"text":2281},{"id":2336,"depth":105,"text":2337,"children":2506},[2507,2508],{"id":2351,"depth":122,"text":2352},{"id":2404,"depth":122,"text":2405},{"id":2448,"depth":105,"text":2449},"Complete WebSocket API reference for NoLag real-time communication. Covers connection, authentication, message types, presence, lobbies, and reconnection.","md",{},true,"/docs/api-reference/websocket",{"title":5,"description":2510},"docs/api-reference/websocket","eqV9pfAvx_6PQNhgARybwH4FsWjvQyWxTXOyLvd8oaQ",1788160342625]