[{"data":1,"prerenderedAt":3520},["ShallowReactive",2],{"navigation":3,"examples-nav":402,"-examples-websocket":503,"-examples-websocket-surround":3517},[4,93,226,232,387,399],{"title":5,"path":6,"stem":7,"children":8,"icon":92},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","/docs/openapi","1.docs/50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":63,"path":64,"stem":65,"icon":66},"WebSocket","/docs/websocket","1.docs/50.websocket","ri:broadcast-fill",{"title":68,"path":69,"stem":70,"icon":71},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":73,"path":74,"stem":75,"icon":76},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":78,"path":79,"stem":80,"icon":81},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":83,"path":84,"stem":85,"icon":86},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":88,"path":89,"stem":90,"icon":91},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":94,"path":95,"stem":96,"children":97,"icon":99},"Deploy","/deploy","2.deploy/0.index",[98,100,121],{"title":94,"path":95,"stem":96,"icon":99},"ri:upload-cloud-2-line",{"title":101,"path":102,"stem":103,"children":104,"page":120},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[105,110,115],{"title":106,"path":107,"stem":108,"icon":109},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":111,"path":112,"stem":113,"icon":114},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":116,"path":117,"stem":118,"icon":119},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":122,"path":123,"stem":124,"children":125,"page":120},"Providers","/deploy/providers","2.deploy/20.providers",[126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"title":127,"path":128,"stem":129},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":131,"path":132,"stem":133},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":135,"path":136,"stem":137},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":139,"path":140,"stem":141},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":143,"path":144,"stem":145},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":147,"path":148,"stem":149},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":151,"path":152,"stem":153},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":155,"path":156,"stem":157},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":159,"path":160,"stem":161},"EdgeOne Pages","/deploy/providers/edgeone","2.deploy/20.providers/edgeone",{"title":163,"path":164,"stem":165},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":167,"path":168,"stem":169},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":171,"path":172,"stem":173},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":175,"path":176,"stem":177},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":179,"path":180,"stem":181},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":183,"path":184,"stem":185},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":187,"path":188,"stem":189},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":191,"path":192,"stem":193},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":195,"path":196,"stem":197},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":199,"path":200,"stem":201},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":203,"path":204,"stem":205},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":207,"path":208,"stem":209},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":211,"path":212,"stem":213},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":215,"path":216,"stem":217},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":219,"path":220,"stem":221},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":223,"path":224,"stem":225},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":227,"path":228,"stem":229,"children":230,"icon":36},"Config","/config","3.config/0.index",[231],{"title":227,"path":228,"stem":229,"icon":36},{"title":233,"path":234,"stem":235,"children":236,"icon":238},"Examples","/examples","4.examples/0.index",[237,239,244,249,254,259,263,268,273,278,283,288,293,297,302,306,310,315,320,325,330,335,340,345,350,355,359,364,369,373,378,383],{"title":233,"path":234,"stem":235,"icon":238},"i-lucide-folder-code",{"title":240,"path":241,"stem":242,"icon":243},"API Routes","/examples/api-routes","4.examples/api-routes","i-lucide-route",{"title":245,"path":246,"stem":247,"icon":248},"Auto Imports","/examples/auto-imports","4.examples/auto-imports","i-lucide-import",{"title":250,"path":251,"stem":252,"icon":253},"Cached Handler","/examples/cached-handler","4.examples/cached-handler","i-lucide-clock",{"title":255,"path":256,"stem":257,"icon":258},"Custom Error Handler","/examples/custom-error-handler","4.examples/custom-error-handler","i-lucide-alert-circle",{"title":38,"path":260,"stem":261,"icon":262},"/examples/database","4.examples/database","i-lucide-database",{"title":264,"path":265,"stem":266,"icon":267},"Elysia","/examples/elysia","4.examples/elysia","i-skill-icons-elysia-dark",{"title":269,"path":270,"stem":271,"icon":272},"Express","/examples/express","4.examples/express","i-simple-icons-express",{"title":274,"path":275,"stem":276,"icon":277},"Fastify","/examples/fastify","4.examples/fastify","i-simple-icons-fastify",{"title":279,"path":280,"stem":281,"icon":282},"Hello World","/examples/hello-world","4.examples/hello-world","i-lucide-sparkles",{"title":284,"path":285,"stem":286,"icon":287},"Hono","/examples/hono","4.examples/hono","i-logos-hono",{"title":289,"path":290,"stem":291,"icon":292},"Import Alias","/examples/import-alias","4.examples/import-alias","i-lucide-at-sign",{"title":294,"path":295,"stem":296,"icon":46},"Middleware","/examples/middleware","4.examples/middleware",{"title":298,"path":299,"stem":300,"icon":301},"Mono JSX","/examples/mono-jsx","4.examples/mono-jsx","i-lucide-brackets",{"title":303,"path":304,"stem":305,"icon":301},"Nano JSX","/examples/nano-jsx","4.examples/nano-jsx",{"title":53,"path":307,"stem":308,"icon":309},"/examples/plugins","4.examples/plugins","i-lucide-plug",{"title":311,"path":312,"stem":313,"icon":314},"Custom Renderer","/examples/renderer","4.examples/renderer","i-lucide-code",{"title":316,"path":317,"stem":318,"icon":319},"Runtime Config","/examples/runtime-config","4.examples/runtime-config","i-lucide-settings",{"title":321,"path":322,"stem":323,"icon":324},"Server Fetch","/examples/server-fetch","4.examples/server-fetch","i-lucide-arrow-right-left",{"title":326,"path":327,"stem":328,"icon":329},"Shiki","/examples/shiki","4.examples/shiki","i-lucide-highlighter",{"title":331,"path":332,"stem":333,"icon":334},"Virtual Routes","/examples/virtual-routes","4.examples/virtual-routes","i-lucide-box",{"title":336,"path":337,"stem":338,"icon":339},"Vite Nitro Plugin","/examples/vite-nitro-plugin","4.examples/vite-nitro-plugin","i-logos-vitejs",{"title":341,"path":342,"stem":343,"icon":344},"Vite RSC","/examples/vite-rsc","4.examples/vite-rsc","i-logos-react",{"title":346,"path":347,"stem":348,"icon":349},"Vite SSR HTML","/examples/vite-ssr-html","4.examples/vite-ssr-html","i-logos-html-5",{"title":351,"path":352,"stem":353,"icon":354},"SSR with Preact","/examples/vite-ssr-preact","4.examples/vite-ssr-preact","i-logos-preact",{"title":356,"path":357,"stem":358,"icon":344},"SSR with React","/examples/vite-ssr-react","4.examples/vite-ssr-react",{"title":360,"path":361,"stem":362,"icon":363},"SSR with SolidJS","/examples/vite-ssr-solid","4.examples/vite-ssr-solid","i-logos-solidjs-icon",{"title":365,"path":366,"stem":367,"icon":368},"SSR with TanStack Router","/examples/vite-ssr-tsr-react","4.examples/vite-ssr-tsr-react","i-simple-icons-tanstack",{"title":370,"path":371,"stem":372,"icon":368},"SSR with TanStack Start","/examples/vite-ssr-tss-react","4.examples/vite-ssr-tss-react",{"title":374,"path":375,"stem":376,"icon":377},"SSR with Vue Router","/examples/vite-ssr-vue-router","4.examples/vite-ssr-vue-router","i-logos-vue",{"title":379,"path":380,"stem":381,"icon":382},"Vite + tRPC","/examples/vite-trpc","4.examples/vite-trpc","i-simple-icons-trpc",{"title":63,"path":384,"stem":385,"icon":386},"/examples/websocket","4.examples/websocket","i-lucide-radio",{"title":388,"path":389,"stem":390,"children":391},"Blog","/blog","9.blog",[392,395],{"title":388,"path":389,"stem":393,"icon":394},"9.blog/index","i-lucide-file-text",{"title":396,"path":397,"stem":398,"icon":394},"Nitro v3 Beta is here!","/blog/v3-beta","9.blog/1.v3-beta",{"title":5,"path":400,"stem":401},"/","index",[403,408,412,415,418,421,425,428,431,434,437,440,443,447,450,453,456,459,462,466,469,473,476,479,482,485,488,491,494,497,500],{"title":240,"description":404,"meta":405,"path":241},"File-based API routing with HTTP method support and dynamic parameters.",{"automd":406,"category":407,"icon":243},true,"features",{"title":245,"description":409,"meta":410,"path":246},"Automatic imports for utilities and composables.",{"automd":406,"category":411,"icon":248},"config",{"title":250,"description":413,"meta":414,"path":251},"Cache route responses with configurable bypass logic.",{"automd":406,"category":407,"icon":253},{"title":255,"description":416,"meta":417,"path":256},"Customize error responses with a global error handler.",{"automd":406,"category":407,"icon":258},{"title":38,"description":419,"meta":420,"path":260},"Built-in database support with SQL template literals.",{"automd":406,"category":407,"icon":262},{"title":264,"description":422,"meta":423,"path":265},"Integrate Elysia with Nitro using the server entry.",{"automd":406,"category":424,"icon":267},"backend frameworks",{"title":269,"description":426,"meta":427,"path":270},"Integrate Express with Nitro using the server entry.",{"automd":406,"category":424,"icon":272},{"title":274,"description":429,"meta":430,"path":275},"Integrate Fastify with Nitro using the server entry.",{"automd":406,"category":424,"icon":277},{"title":279,"description":432,"meta":433,"path":280},"Minimal Nitro server using the web standard fetch handler.",{"automd":406,"category":407,"icon":282},{"title":284,"description":435,"meta":436,"path":285},"Integrate Hono with Nitro using the server entry.",{"automd":406,"category":424,"icon":287},{"title":289,"description":438,"meta":439,"path":290},"Custom import aliases for cleaner module paths.",{"automd":406,"category":411,"icon":292},{"title":294,"description":441,"meta":442,"path":295},"Request middleware for authentication, logging, and request modification.",{"automd":406,"category":407,"icon":46},{"title":298,"description":444,"meta":445,"path":299},"Server-side JSX rendering in Nitro with mono-jsx.",{"automd":406,"category":446,"icon":301},"server side rendering",{"title":303,"description":448,"meta":449,"path":304},"Server-side JSX rendering in Nitro with nano-jsx.",{"automd":406,"category":446,"icon":301},{"title":53,"description":451,"meta":452,"path":307},"Extend Nitro with custom plugins for hooks and lifecycle events.",{"automd":406,"category":407,"icon":309},{"title":311,"description":454,"meta":455,"path":312},"Build a custom HTML renderer in Nitro with server-side data fetching.",{"automd":406,"category":446,"icon":314},{"title":316,"description":457,"meta":458,"path":317},"Environment-aware configuration with runtime access.",{"automd":406,"category":411,"icon":319},{"title":321,"description":460,"meta":461,"path":322},"Internal server-to-server requests without network overhead.",{"automd":406,"category":407,"icon":324},{"title":326,"description":463,"meta":464,"path":327},"Server-side syntax highlighting in Nitro with Shiki.",{"automd":406,"category":465,"icon":329},"integrations",{"title":331,"description":467,"meta":468,"path":332},"Define routes programmatically using Nitro's virtual module system.",{"automd":406,"category":407,"icon":334},{"title":336,"description":470,"meta":471,"path":337},"Use Nitro as a Vite plugin for programmatic configuration.",{"automd":406,"category":472,"icon":339},"vite",{"title":341,"description":474,"meta":475,"path":342},"React Server Components with Vite and Nitro.",{"automd":406,"category":472,"icon":344},{"title":346,"description":477,"meta":478,"path":347},"Server-side rendering with vanilla HTML, Vite, and Nitro.",{"automd":406,"category":446,"icon":349},{"title":351,"description":480,"meta":481,"path":352},"Server-side rendering with Preact in Nitro using Vite.",{"automd":406,"category":446,"icon":354},{"title":356,"description":483,"meta":484,"path":357},"Server-side rendering with React in Nitro using Vite.",{"automd":406,"category":446,"icon":344},{"title":360,"description":486,"meta":487,"path":361},"Server-side rendering with SolidJS in Nitro using Vite.",{"automd":406,"category":446,"icon":363},{"title":365,"description":489,"meta":490,"path":366},"Client-side routing with TanStack Router in Nitro using Vite.",{"automd":406,"category":446,"icon":368},{"title":370,"description":492,"meta":493,"path":371},"Full-stack React with TanStack Start in Nitro using Vite.",{"automd":406,"category":446,"icon":368},{"title":374,"description":495,"meta":496,"path":375},"Server-side rendering with Vue Router in Nitro using Vite.",{"automd":406,"category":446,"icon":377},{"title":379,"description":498,"meta":499,"path":380},"End-to-end typesafe APIs with tRPC in Nitro using Vite.",{"automd":406,"category":472,"icon":382},{"title":63,"description":501,"meta":502,"path":384},"Real-time bidirectional communication with WebSocket support.",{"automd":406,"category":407,"icon":386},{"id":504,"title":63,"body":505,"description":501,"extension":3512,"meta":3513,"navigation":3514,"path":384,"seo":3515,"stem":385,"__hash__":3516},"content/4.examples/websocket.md",{"type":506,"value":507,"toc":3508,"icon":386},"minimark",[508,3205,3208,3213,3219,3477,3484,3488,3505],[509,510,513,2672,2746,2832,2856,2910],"code-tree",{":expand-all":511,"default-value":512},"true","routes/_ws.ts",[514,515,520],"pre",{"className":516,"code":517,"filename":518,"language":519,"meta":5,"style":5},"language-html shiki shiki-themes github-light github-dark github-dark","\u003Chtml lang=\"en\" data-theme=\"dark\">\n  \u003Chead>\n    \u003Ctitle>CrossWS Test Page\u003C/title>\n    \u003Cscript src=\"https://cdn.tailwindcss.com\">\u003C/script>\n    \u003Cstyle>\n      body {\n        background-color: #1a1a1a;\n      }\n    \u003C/style>\n    \u003Cscript type=\"module\">\n      import { createApp, reactive, nextTick } from \"https://esm.sh/petite-vue@0.4.1\";\n\n      let ws;\n\n      const store = reactive({\n        message: \"\",\n        messages: [],\n      });\n\n      const scroll = () => {\n        nextTick(() => {\n          const el = document.querySelector(\"#messages\");\n          el.scrollTop = el.scrollHeight;\n          el.scrollTo({\n            top: el.scrollHeight,\n            behavior: \"smooth\",\n          });\n        });\n      };\n\n      const format = async () => {\n        for (const message of store.messages) {\n          if (!message._fmt && message.text.startsWith(\"{\")) {\n            message._fmt = true;\n            const { codeToHtml } = await import(\"https://esm.sh/shiki@1.0.0\");\n            const str = JSON.stringify(JSON.parse(message.text), null, 2);\n            message.formattedText = await codeToHtml(str, {\n              lang: \"json\",\n              theme: \"dark-plus\",\n            });\n          }\n        }\n      };\n\n      const log = (user, ...args) => {\n        console.log(\"[ws]\", user, ...args);\n        store.messages.push({\n          text: args.join(\" \"),\n          formattedText: \"\",\n          user: user,\n          date: new Date().toLocaleString(),\n        });\n        scroll();\n        format();\n      };\n\n      const connect = async () => {\n        const isSecure = location.protocol === \"https:\";\n        const url = (isSecure ? \"wss://\" : \"ws://\") + location.host + \"/_ws\";\n        if (ws) {\n          log(\"ws\", \"Closing previous connection before reconnecting...\");\n          ws.close();\n          clear();\n        }\n\n        log(\"ws\", \"Connecting to\", url, \"...\");\n        ws = new WebSocket(url);\n\n        ws.addEventListener(\"message\", async (event) => {\n          let data = typeof event.data === \"string\" ? event.data : await event.data.text();\n          const { user = \"system\", message = \"\" } = data.startsWith(\"{\")\n            ? JSON.parse(data)\n            : { message: data };\n          log(user, typeof message === \"string\" ? message : JSON.stringify(message));\n        });\n\n        await new Promise((resolve) => ws.addEventListener(\"open\", resolve));\n        log(\"ws\", \"Connected!\");\n      };\n\n      const clear = () => {\n        store.messages.splice(0, store.messages.length);\n        log(\"system\", \"previous messages cleared\");\n      };\n\n      const send = () => {\n        console.log(\"sending message...\");\n        if (store.message) {\n          ws.send(store.message);\n        }\n        store.message = \"\";\n      };\n\n      const ping = () => {\n        log(\"ws\", \"Sending ping\");\n        ws.send(\"ping\");\n      };\n\n      createApp({\n        store,\n        send,\n        ping,\n        clear,\n        connect,\n        rand: Math.random(),\n      }).mount();\n\n      await connect();\n    \u003C/script>\n  \u003C/head>\n  \u003Cbody class=\"h-screen flex flex-col justify-between\">\n    \u003Cmain v-scope=\"{}\">\n      \u003C!-- Messages -->\n      \u003Cdiv id=\"messages\" class=\"flex-grow flex flex-col justify-end px-4 py-8\">\n        \u003Cdiv class=\"flex items-center mb-4\" v-for=\"message in store.messages\">\n          \u003Cdiv class=\"flex flex-col\">\n            \u003Cp class=\"text-gray-500 mb-1 text-xs ml-10\">{{ message.user }}\u003C/p>\n            \u003Cdiv class=\"flex items-center\">\n              \u003Cimg\n                :src=\"'https://www.gravatar.com/avatar/' + encodeURIComponent(message.user + rand) + '?s=512&d=monsterid'\"\n                alt=\"Avatar\"\n                class=\"w-8 h-8 rounded-full\"\n              />\n              \u003Cdiv class=\"ml-2 bg-gray-800 rounded-lg p-2\">\n                \u003Cp\n                  v-if=\"message.formattedText\"\n                  class=\"overflow-x-scroll\"\n                  v-html=\"message.formattedText\"\n                >\u003C/p>\n                \u003Cp v-else class=\"text-white\">{{ message.text }}\u003C/p>\n              \u003C/div>\n            \u003C/div>\n            \u003Cp class=\"text-gray-500 mt-1 text-xs ml-10\">{{ message.date }}\u003C/p>\n          \u003C/div>\n        \u003C/div>\n      \u003C/div>\n\n      \u003C!-- Chatbox -->\n      \u003Cdiv class=\"bg-gray-800 px-4 py-2 flex items-center justify-between fixed bottom-0 w-full\">\n        \u003Cdiv class=\"w-full min-w-6\">\n          \u003Cinput\n            type=\"text\"\n            placeholder=\"Type your message...\"\n            class=\"w-full rounded-l-lg px-4 py-2 bg-gray-700 text-white focus:outline-none focus:ring focus:border-blue-300\"\n            @keydown.enter=\"send\"\n            v-model=\"store.message\"\n          />\n        \u003C/div>\n        \u003Cdiv class=\"flex\">\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"send\">\n            Send\n          \u003C/button>\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"ping\">\n            Ping\n          \u003C/button>\n          \u003Cbutton class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\" @click=\"connect\">\n            Reconnect\n          \u003C/button>\n          \u003Cbutton\n            class=\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-r-lg\"\n            @click=\"clear\"\n          >\n            Clear\n          \u003C/button>\n        \u003C/div>\n      \u003C/div>\n    \u003C/main>\n  \u003C/body>\n\u003C/html>\n`\n","index.html","html",[521,522,523,557,568,584,607,617,626,642,648,658,675,693,699,708,713,731,743,749,755,760,778,791,817,828,839,845,856,862,868,874,879,898,919,950,963,993,1036,1052,1063,1074,1080,1086,1092,1097,1102,1133,1155,1166,1183,1193,1199,1220,1225,1234,1242,1247,1252,1270,1292,1332,1341,1359,1370,1378,1383,1388,1411,1428,1433,1463,1503,1543,1558,1567,1600,1605,1610,1644,1660,1665,1670,1686,1707,1724,1729,1734,1750,1764,1772,1783,1788,1800,1805,1810,1826,1842,1856,1861,1866,1874,1880,1886,1892,1898,1904,1915,1926,1931,1941,1950,1960,1978,1996,2003,2029,2054,2071,2094,2110,2119,2130,2141,2152,2158,2174,2183,2194,2205,2215,2225,2249,2259,2269,2290,2300,2310,2320,2325,2331,2347,2363,2371,2382,2393,2404,2415,2426,2432,2441,2457,2482,2488,2497,2518,2524,2533,2555,2561,2570,2578,2588,2599,2605,2611,2620,2629,2638,2647,2656,2666],"code",{"__ignoreMap":5},[524,525,528,532,535,539,542,546,549,551,554],"span",{"class":526,"line":527},"line",1,[524,529,531],{"class":530},"slsVL","\u003C",[524,533,519],{"class":534},"sByVh",[524,536,538],{"class":537},"shcOC"," lang",[524,540,541],{"class":530},"=",[524,543,545],{"class":544},"sfrk1","\"en\"",[524,547,548],{"class":537}," data-theme",[524,550,541],{"class":530},[524,552,553],{"class":544},"\"dark\"",[524,555,556],{"class":530},">\n",[524,558,560,563,566],{"class":526,"line":559},2,[524,561,562],{"class":530},"  \u003C",[524,564,565],{"class":534},"head",[524,567,556],{"class":530},[524,569,571,574,577,580,582],{"class":526,"line":570},3,[524,572,573],{"class":530},"    \u003C",[524,575,576],{"class":534},"title",[524,578,579],{"class":530},">CrossWS Test Page\u003C/",[524,581,576],{"class":534},[524,583,556],{"class":530},[524,585,587,589,592,595,597,600,603,605],{"class":526,"line":586},4,[524,588,573],{"class":530},[524,590,591],{"class":534},"script",[524,593,594],{"class":537}," src",[524,596,541],{"class":530},[524,598,599],{"class":544},"\"https://cdn.tailwindcss.com\"",[524,601,602],{"class":530},">\u003C/",[524,604,591],{"class":534},[524,606,556],{"class":530},[524,608,610,612,615],{"class":526,"line":609},5,[524,611,573],{"class":530},[524,613,614],{"class":534},"style",[524,616,556],{"class":530},[524,618,620,623],{"class":526,"line":619},6,[524,621,622],{"class":534},"      body",[524,624,625],{"class":530}," {\n",[524,627,629,633,636,639],{"class":526,"line":628},7,[524,630,632],{"class":631},"suiK_","        background-color",[524,634,635],{"class":530},": ",[524,637,638],{"class":631},"#1a1a1a",[524,640,641],{"class":530},";\n",[524,643,645],{"class":526,"line":644},8,[524,646,647],{"class":530},"      }\n",[524,649,651,654,656],{"class":526,"line":650},9,[524,652,653],{"class":530},"    \u003C/",[524,655,614],{"class":534},[524,657,556],{"class":530},[524,659,661,663,665,668,670,673],{"class":526,"line":660},10,[524,662,573],{"class":530},[524,664,591],{"class":534},[524,666,667],{"class":537}," type",[524,669,541],{"class":530},[524,671,672],{"class":544},"\"module\"",[524,674,556],{"class":530},[524,676,678,682,685,688,691],{"class":526,"line":677},11,[524,679,681],{"class":680},"so5gQ","      import",[524,683,684],{"class":530}," { createApp, reactive, nextTick } ",[524,686,687],{"class":680},"from",[524,689,690],{"class":544}," \"https://esm.sh/petite-vue@0.4.1\"",[524,692,641],{"class":530},[524,694,696],{"class":526,"line":695},12,[524,697,698],{"emptyLinePlaceholder":406},"\n",[524,700,702,705],{"class":526,"line":701},13,[524,703,704],{"class":680},"      let",[524,706,707],{"class":530}," ws;\n",[524,709,711],{"class":526,"line":710},14,[524,712,698],{"emptyLinePlaceholder":406},[524,714,716,719,722,725,728],{"class":526,"line":715},15,[524,717,718],{"class":680},"      const",[524,720,721],{"class":631}," store",[524,723,724],{"class":680}," =",[524,726,727],{"class":537}," reactive",[524,729,730],{"class":530},"({\n",[524,732,734,737,740],{"class":526,"line":733},16,[524,735,736],{"class":530},"        message: ",[524,738,739],{"class":544},"\"\"",[524,741,742],{"class":530},",\n",[524,744,746],{"class":526,"line":745},17,[524,747,748],{"class":530},"        messages: [],\n",[524,750,752],{"class":526,"line":751},18,[524,753,754],{"class":530},"      });\n",[524,756,758],{"class":526,"line":757},19,[524,759,698],{"emptyLinePlaceholder":406},[524,761,763,765,768,770,773,776],{"class":526,"line":762},20,[524,764,718],{"class":680},[524,766,767],{"class":537}," scroll",[524,769,724],{"class":680},[524,771,772],{"class":530}," () ",[524,774,775],{"class":680},"=>",[524,777,625],{"class":530},[524,779,781,784,787,789],{"class":526,"line":780},21,[524,782,783],{"class":537},"        nextTick",[524,785,786],{"class":530},"(() ",[524,788,775],{"class":680},[524,790,625],{"class":530},[524,792,794,797,800,802,805,808,811,814],{"class":526,"line":793},22,[524,795,796],{"class":680},"          const",[524,798,799],{"class":631}," el",[524,801,724],{"class":680},[524,803,804],{"class":530}," document.",[524,806,807],{"class":537},"querySelector",[524,809,810],{"class":530},"(",[524,812,813],{"class":544},"\"#messages\"",[524,815,816],{"class":530},");\n",[524,818,820,823,825],{"class":526,"line":819},23,[524,821,822],{"class":530},"          el.scrollTop ",[524,824,541],{"class":680},[524,826,827],{"class":530}," el.scrollHeight;\n",[524,829,831,834,837],{"class":526,"line":830},24,[524,832,833],{"class":530},"          el.",[524,835,836],{"class":537},"scrollTo",[524,838,730],{"class":530},[524,840,842],{"class":526,"line":841},25,[524,843,844],{"class":530},"            top: el.scrollHeight,\n",[524,846,848,851,854],{"class":526,"line":847},26,[524,849,850],{"class":530},"            behavior: ",[524,852,853],{"class":544},"\"smooth\"",[524,855,742],{"class":530},[524,857,859],{"class":526,"line":858},27,[524,860,861],{"class":530},"          });\n",[524,863,865],{"class":526,"line":864},28,[524,866,867],{"class":530},"        });\n",[524,869,871],{"class":526,"line":870},29,[524,872,873],{"class":530},"      };\n",[524,875,877],{"class":526,"line":876},30,[524,878,698],{"emptyLinePlaceholder":406},[524,880,882,884,887,889,892,894,896],{"class":526,"line":881},31,[524,883,718],{"class":680},[524,885,886],{"class":537}," format",[524,888,724],{"class":680},[524,890,891],{"class":680}," async",[524,893,772],{"class":530},[524,895,775],{"class":680},[524,897,625],{"class":530},[524,899,901,904,907,910,913,916],{"class":526,"line":900},32,[524,902,903],{"class":680},"        for",[524,905,906],{"class":530}," (",[524,908,909],{"class":680},"const",[524,911,912],{"class":631}," message",[524,914,915],{"class":680}," of",[524,917,918],{"class":530}," store.messages) {\n",[524,920,922,925,927,930,933,936,939,942,944,947],{"class":526,"line":921},33,[524,923,924],{"class":680},"          if",[524,926,906],{"class":530},[524,928,929],{"class":680},"!",[524,931,932],{"class":530},"message._fmt ",[524,934,935],{"class":680},"&&",[524,937,938],{"class":530}," message.text.",[524,940,941],{"class":537},"startsWith",[524,943,810],{"class":530},[524,945,946],{"class":544},"\"{\"",[524,948,949],{"class":530},")) {\n",[524,951,953,956,958,961],{"class":526,"line":952},34,[524,954,955],{"class":530},"            message._fmt ",[524,957,541],{"class":680},[524,959,960],{"class":631}," true",[524,962,641],{"class":530},[524,964,966,969,972,975,978,980,983,986,988,991],{"class":526,"line":965},35,[524,967,968],{"class":680},"            const",[524,970,971],{"class":530}," { ",[524,973,974],{"class":631},"codeToHtml",[524,976,977],{"class":530}," } ",[524,979,541],{"class":680},[524,981,982],{"class":680}," await",[524,984,985],{"class":680}," import",[524,987,810],{"class":530},[524,989,990],{"class":544},"\"https://esm.sh/shiki@1.0.0\"",[524,992,816],{"class":530},[524,994,996,998,1001,1003,1006,1009,1012,1014,1017,1019,1022,1025,1028,1031,1034],{"class":526,"line":995},36,[524,997,968],{"class":680},[524,999,1000],{"class":631}," str",[524,1002,724],{"class":680},[524,1004,1005],{"class":631}," JSON",[524,1007,1008],{"class":530},".",[524,1010,1011],{"class":537},"stringify",[524,1013,810],{"class":530},[524,1015,1016],{"class":631},"JSON",[524,1018,1008],{"class":530},[524,1020,1021],{"class":537},"parse",[524,1023,1024],{"class":530},"(message.text), ",[524,1026,1027],{"class":631},"null",[524,1029,1030],{"class":530},", ",[524,1032,1033],{"class":631},"2",[524,1035,816],{"class":530},[524,1037,1039,1042,1044,1046,1049],{"class":526,"line":1038},37,[524,1040,1041],{"class":530},"            message.formattedText ",[524,1043,541],{"class":680},[524,1045,982],{"class":680},[524,1047,1048],{"class":537}," codeToHtml",[524,1050,1051],{"class":530},"(str, {\n",[524,1053,1055,1058,1061],{"class":526,"line":1054},38,[524,1056,1057],{"class":530},"              lang: ",[524,1059,1060],{"class":544},"\"json\"",[524,1062,742],{"class":530},[524,1064,1066,1069,1072],{"class":526,"line":1065},39,[524,1067,1068],{"class":530},"              theme: ",[524,1070,1071],{"class":544},"\"dark-plus\"",[524,1073,742],{"class":530},[524,1075,1077],{"class":526,"line":1076},40,[524,1078,1079],{"class":530},"            });\n",[524,1081,1083],{"class":526,"line":1082},41,[524,1084,1085],{"class":530},"          }\n",[524,1087,1089],{"class":526,"line":1088},42,[524,1090,1091],{"class":530},"        }\n",[524,1093,1095],{"class":526,"line":1094},43,[524,1096,873],{"class":530},[524,1098,1100],{"class":526,"line":1099},44,[524,1101,698],{"emptyLinePlaceholder":406},[524,1103,1105,1107,1110,1112,1114,1118,1120,1123,1126,1129,1131],{"class":526,"line":1104},45,[524,1106,718],{"class":680},[524,1108,1109],{"class":537}," log",[524,1111,724],{"class":680},[524,1113,906],{"class":530},[524,1115,1117],{"class":1116},"sQHwn","user",[524,1119,1030],{"class":530},[524,1121,1122],{"class":680},"...",[524,1124,1125],{"class":1116},"args",[524,1127,1128],{"class":530},") ",[524,1130,775],{"class":680},[524,1132,625],{"class":530},[524,1134,1136,1139,1142,1144,1147,1150,1152],{"class":526,"line":1135},46,[524,1137,1138],{"class":530},"        console.",[524,1140,1141],{"class":537},"log",[524,1143,810],{"class":530},[524,1145,1146],{"class":544},"\"[ws]\"",[524,1148,1149],{"class":530},", user, ",[524,1151,1122],{"class":680},[524,1153,1154],{"class":530},"args);\n",[524,1156,1158,1161,1164],{"class":526,"line":1157},47,[524,1159,1160],{"class":530},"        store.messages.",[524,1162,1163],{"class":537},"push",[524,1165,730],{"class":530},[524,1167,1169,1172,1175,1177,1180],{"class":526,"line":1168},48,[524,1170,1171],{"class":530},"          text: args.",[524,1173,1174],{"class":537},"join",[524,1176,810],{"class":530},[524,1178,1179],{"class":544},"\" \"",[524,1181,1182],{"class":530},"),\n",[524,1184,1186,1189,1191],{"class":526,"line":1185},49,[524,1187,1188],{"class":530},"          formattedText: ",[524,1190,739],{"class":544},[524,1192,742],{"class":530},[524,1194,1196],{"class":526,"line":1195},50,[524,1197,1198],{"class":530},"          user: user,\n",[524,1200,1202,1205,1208,1211,1214,1217],{"class":526,"line":1201},51,[524,1203,1204],{"class":530},"          date: ",[524,1206,1207],{"class":680},"new",[524,1209,1210],{"class":537}," Date",[524,1212,1213],{"class":530},"().",[524,1215,1216],{"class":537},"toLocaleString",[524,1218,1219],{"class":530},"(),\n",[524,1221,1223],{"class":526,"line":1222},52,[524,1224,867],{"class":530},[524,1226,1228,1231],{"class":526,"line":1227},53,[524,1229,1230],{"class":537},"        scroll",[524,1232,1233],{"class":530},"();\n",[524,1235,1237,1240],{"class":526,"line":1236},54,[524,1238,1239],{"class":537},"        format",[524,1241,1233],{"class":530},[524,1243,1245],{"class":526,"line":1244},55,[524,1246,873],{"class":530},[524,1248,1250],{"class":526,"line":1249},56,[524,1251,698],{"emptyLinePlaceholder":406},[524,1253,1255,1257,1260,1262,1264,1266,1268],{"class":526,"line":1254},57,[524,1256,718],{"class":680},[524,1258,1259],{"class":537}," connect",[524,1261,724],{"class":680},[524,1263,891],{"class":680},[524,1265,772],{"class":530},[524,1267,775],{"class":680},[524,1269,625],{"class":530},[524,1271,1273,1276,1279,1281,1284,1287,1290],{"class":526,"line":1272},58,[524,1274,1275],{"class":680},"        const",[524,1277,1278],{"class":631}," isSecure",[524,1280,724],{"class":680},[524,1282,1283],{"class":530}," location.protocol ",[524,1285,1286],{"class":680},"===",[524,1288,1289],{"class":544}," \"https:\"",[524,1291,641],{"class":530},[524,1293,1295,1297,1300,1302,1305,1308,1311,1314,1317,1319,1322,1325,1327,1330],{"class":526,"line":1294},59,[524,1296,1275],{"class":680},[524,1298,1299],{"class":631}," url",[524,1301,724],{"class":680},[524,1303,1304],{"class":530}," (isSecure ",[524,1306,1307],{"class":680},"?",[524,1309,1310],{"class":544}," \"wss://\"",[524,1312,1313],{"class":680}," :",[524,1315,1316],{"class":544}," \"ws://\"",[524,1318,1128],{"class":530},[524,1320,1321],{"class":680},"+",[524,1323,1324],{"class":530}," location.host ",[524,1326,1321],{"class":680},[524,1328,1329],{"class":544}," \"/_ws\"",[524,1331,641],{"class":530},[524,1333,1335,1338],{"class":526,"line":1334},60,[524,1336,1337],{"class":680},"        if",[524,1339,1340],{"class":530}," (ws) {\n",[524,1342,1344,1347,1349,1352,1354,1357],{"class":526,"line":1343},61,[524,1345,1346],{"class":537},"          log",[524,1348,810],{"class":530},[524,1350,1351],{"class":544},"\"ws\"",[524,1353,1030],{"class":530},[524,1355,1356],{"class":544},"\"Closing previous connection before reconnecting...\"",[524,1358,816],{"class":530},[524,1360,1362,1365,1368],{"class":526,"line":1361},62,[524,1363,1364],{"class":530},"          ws.",[524,1366,1367],{"class":537},"close",[524,1369,1233],{"class":530},[524,1371,1373,1376],{"class":526,"line":1372},63,[524,1374,1375],{"class":537},"          clear",[524,1377,1233],{"class":530},[524,1379,1381],{"class":526,"line":1380},64,[524,1382,1091],{"class":530},[524,1384,1386],{"class":526,"line":1385},65,[524,1387,698],{"emptyLinePlaceholder":406},[524,1389,1391,1394,1396,1398,1400,1403,1406,1409],{"class":526,"line":1390},66,[524,1392,1393],{"class":537},"        log",[524,1395,810],{"class":530},[524,1397,1351],{"class":544},[524,1399,1030],{"class":530},[524,1401,1402],{"class":544},"\"Connecting to\"",[524,1404,1405],{"class":530},", url, ",[524,1407,1408],{"class":544},"\"...\"",[524,1410,816],{"class":530},[524,1412,1414,1417,1419,1422,1425],{"class":526,"line":1413},67,[524,1415,1416],{"class":530},"        ws ",[524,1418,541],{"class":680},[524,1420,1421],{"class":680}," new",[524,1423,1424],{"class":537}," WebSocket",[524,1426,1427],{"class":530},"(url);\n",[524,1429,1431],{"class":526,"line":1430},68,[524,1432,698],{"emptyLinePlaceholder":406},[524,1434,1436,1439,1442,1444,1447,1449,1452,1454,1457,1459,1461],{"class":526,"line":1435},69,[524,1437,1438],{"class":530},"        ws.",[524,1440,1441],{"class":537},"addEventListener",[524,1443,810],{"class":530},[524,1445,1446],{"class":544},"\"message\"",[524,1448,1030],{"class":530},[524,1450,1451],{"class":680},"async",[524,1453,906],{"class":530},[524,1455,1456],{"class":1116},"event",[524,1458,1128],{"class":530},[524,1460,775],{"class":680},[524,1462,625],{"class":530},[524,1464,1466,1469,1472,1474,1477,1480,1482,1485,1488,1490,1493,1495,1498,1501],{"class":526,"line":1465},70,[524,1467,1468],{"class":680},"          let",[524,1470,1471],{"class":530}," data ",[524,1473,541],{"class":680},[524,1475,1476],{"class":680}," typeof",[524,1478,1479],{"class":530}," event.data ",[524,1481,1286],{"class":680},[524,1483,1484],{"class":544}," \"string\"",[524,1486,1487],{"class":680}," ?",[524,1489,1479],{"class":530},[524,1491,1492],{"class":680},":",[524,1494,982],{"class":680},[524,1496,1497],{"class":530}," event.data.",[524,1499,1500],{"class":537},"text",[524,1502,1233],{"class":530},[524,1504,1506,1508,1510,1512,1514,1517,1519,1522,1524,1527,1529,1531,1534,1536,1538,1540],{"class":526,"line":1505},71,[524,1507,796],{"class":680},[524,1509,971],{"class":530},[524,1511,1117],{"class":631},[524,1513,724],{"class":680},[524,1515,1516],{"class":544}," \"system\"",[524,1518,1030],{"class":530},[524,1520,1521],{"class":631},"message",[524,1523,724],{"class":680},[524,1525,1526],{"class":544}," \"\"",[524,1528,977],{"class":530},[524,1530,541],{"class":680},[524,1532,1533],{"class":530}," data.",[524,1535,941],{"class":537},[524,1537,810],{"class":530},[524,1539,946],{"class":544},[524,1541,1542],{"class":530},")\n",[524,1544,1546,1549,1551,1553,1555],{"class":526,"line":1545},72,[524,1547,1548],{"class":680},"            ?",[524,1550,1005],{"class":631},[524,1552,1008],{"class":530},[524,1554,1021],{"class":537},[524,1556,1557],{"class":530},"(data)\n",[524,1559,1561,1564],{"class":526,"line":1560},73,[524,1562,1563],{"class":680},"            :",[524,1565,1566],{"class":530}," { message: data };\n",[524,1568,1570,1572,1575,1578,1581,1583,1585,1587,1589,1591,1593,1595,1597],{"class":526,"line":1569},74,[524,1571,1346],{"class":537},[524,1573,1574],{"class":530},"(user, ",[524,1576,1577],{"class":680},"typeof",[524,1579,1580],{"class":530}," message ",[524,1582,1286],{"class":680},[524,1584,1484],{"class":544},[524,1586,1487],{"class":680},[524,1588,1580],{"class":530},[524,1590,1492],{"class":680},[524,1592,1005],{"class":631},[524,1594,1008],{"class":530},[524,1596,1011],{"class":537},[524,1598,1599],{"class":530},"(message));\n",[524,1601,1603],{"class":526,"line":1602},75,[524,1604,867],{"class":530},[524,1606,1608],{"class":526,"line":1607},76,[524,1609,698],{"emptyLinePlaceholder":406},[524,1611,1613,1616,1618,1621,1624,1627,1629,1631,1634,1636,1638,1641],{"class":526,"line":1612},77,[524,1614,1615],{"class":680},"        await",[524,1617,1421],{"class":680},[524,1619,1620],{"class":631}," Promise",[524,1622,1623],{"class":530},"((",[524,1625,1626],{"class":1116},"resolve",[524,1628,1128],{"class":530},[524,1630,775],{"class":680},[524,1632,1633],{"class":530}," ws.",[524,1635,1441],{"class":537},[524,1637,810],{"class":530},[524,1639,1640],{"class":544},"\"open\"",[524,1642,1643],{"class":530},", resolve));\n",[524,1645,1647,1649,1651,1653,1655,1658],{"class":526,"line":1646},78,[524,1648,1393],{"class":537},[524,1650,810],{"class":530},[524,1652,1351],{"class":544},[524,1654,1030],{"class":530},[524,1656,1657],{"class":544},"\"Connected!\"",[524,1659,816],{"class":530},[524,1661,1663],{"class":526,"line":1662},79,[524,1664,873],{"class":530},[524,1666,1668],{"class":526,"line":1667},80,[524,1669,698],{"emptyLinePlaceholder":406},[524,1671,1673,1675,1678,1680,1682,1684],{"class":526,"line":1672},81,[524,1674,718],{"class":680},[524,1676,1677],{"class":537}," clear",[524,1679,724],{"class":680},[524,1681,772],{"class":530},[524,1683,775],{"class":680},[524,1685,625],{"class":530},[524,1687,1689,1691,1694,1696,1699,1702,1705],{"class":526,"line":1688},82,[524,1690,1160],{"class":530},[524,1692,1693],{"class":537},"splice",[524,1695,810],{"class":530},[524,1697,1698],{"class":631},"0",[524,1700,1701],{"class":530},", store.messages.",[524,1703,1704],{"class":631},"length",[524,1706,816],{"class":530},[524,1708,1710,1712,1714,1717,1719,1722],{"class":526,"line":1709},83,[524,1711,1393],{"class":537},[524,1713,810],{"class":530},[524,1715,1716],{"class":544},"\"system\"",[524,1718,1030],{"class":530},[524,1720,1721],{"class":544},"\"previous messages cleared\"",[524,1723,816],{"class":530},[524,1725,1727],{"class":526,"line":1726},84,[524,1728,873],{"class":530},[524,1730,1732],{"class":526,"line":1731},85,[524,1733,698],{"emptyLinePlaceholder":406},[524,1735,1737,1739,1742,1744,1746,1748],{"class":526,"line":1736},86,[524,1738,718],{"class":680},[524,1740,1741],{"class":537}," send",[524,1743,724],{"class":680},[524,1745,772],{"class":530},[524,1747,775],{"class":680},[524,1749,625],{"class":530},[524,1751,1753,1755,1757,1759,1762],{"class":526,"line":1752},87,[524,1754,1138],{"class":530},[524,1756,1141],{"class":537},[524,1758,810],{"class":530},[524,1760,1761],{"class":544},"\"sending message...\"",[524,1763,816],{"class":530},[524,1765,1767,1769],{"class":526,"line":1766},88,[524,1768,1337],{"class":680},[524,1770,1771],{"class":530}," (store.message) {\n",[524,1773,1775,1777,1780],{"class":526,"line":1774},89,[524,1776,1364],{"class":530},[524,1778,1779],{"class":537},"send",[524,1781,1782],{"class":530},"(store.message);\n",[524,1784,1786],{"class":526,"line":1785},90,[524,1787,1091],{"class":530},[524,1789,1791,1794,1796,1798],{"class":526,"line":1790},91,[524,1792,1793],{"class":530},"        store.message ",[524,1795,541],{"class":680},[524,1797,1526],{"class":544},[524,1799,641],{"class":530},[524,1801,1803],{"class":526,"line":1802},92,[524,1804,873],{"class":530},[524,1806,1808],{"class":526,"line":1807},93,[524,1809,698],{"emptyLinePlaceholder":406},[524,1811,1813,1815,1818,1820,1822,1824],{"class":526,"line":1812},94,[524,1814,718],{"class":680},[524,1816,1817],{"class":537}," ping",[524,1819,724],{"class":680},[524,1821,772],{"class":530},[524,1823,775],{"class":680},[524,1825,625],{"class":530},[524,1827,1829,1831,1833,1835,1837,1840],{"class":526,"line":1828},95,[524,1830,1393],{"class":537},[524,1832,810],{"class":530},[524,1834,1351],{"class":544},[524,1836,1030],{"class":530},[524,1838,1839],{"class":544},"\"Sending ping\"",[524,1841,816],{"class":530},[524,1843,1845,1847,1849,1851,1854],{"class":526,"line":1844},96,[524,1846,1438],{"class":530},[524,1848,1779],{"class":537},[524,1850,810],{"class":530},[524,1852,1853],{"class":544},"\"ping\"",[524,1855,816],{"class":530},[524,1857,1859],{"class":526,"line":1858},97,[524,1860,873],{"class":530},[524,1862,1864],{"class":526,"line":1863},98,[524,1865,698],{"emptyLinePlaceholder":406},[524,1867,1869,1872],{"class":526,"line":1868},99,[524,1870,1871],{"class":537},"      createApp",[524,1873,730],{"class":530},[524,1875,1877],{"class":526,"line":1876},100,[524,1878,1879],{"class":530},"        store,\n",[524,1881,1883],{"class":526,"line":1882},101,[524,1884,1885],{"class":530},"        send,\n",[524,1887,1889],{"class":526,"line":1888},102,[524,1890,1891],{"class":530},"        ping,\n",[524,1893,1895],{"class":526,"line":1894},103,[524,1896,1897],{"class":530},"        clear,\n",[524,1899,1901],{"class":526,"line":1900},104,[524,1902,1903],{"class":530},"        connect,\n",[524,1905,1907,1910,1913],{"class":526,"line":1906},105,[524,1908,1909],{"class":530},"        rand: Math.",[524,1911,1912],{"class":537},"random",[524,1914,1219],{"class":530},[524,1916,1918,1921,1924],{"class":526,"line":1917},106,[524,1919,1920],{"class":530},"      }).",[524,1922,1923],{"class":537},"mount",[524,1925,1233],{"class":530},[524,1927,1929],{"class":526,"line":1928},107,[524,1930,698],{"emptyLinePlaceholder":406},[524,1932,1934,1937,1939],{"class":526,"line":1933},108,[524,1935,1936],{"class":680},"      await",[524,1938,1259],{"class":537},[524,1940,1233],{"class":530},[524,1942,1944,1946,1948],{"class":526,"line":1943},109,[524,1945,653],{"class":530},[524,1947,591],{"class":534},[524,1949,556],{"class":530},[524,1951,1953,1956,1958],{"class":526,"line":1952},110,[524,1954,1955],{"class":530},"  \u003C/",[524,1957,565],{"class":534},[524,1959,556],{"class":530},[524,1961,1963,1965,1968,1971,1973,1976],{"class":526,"line":1962},111,[524,1964,562],{"class":530},[524,1966,1967],{"class":534},"body",[524,1969,1970],{"class":537}," class",[524,1972,541],{"class":530},[524,1974,1975],{"class":544},"\"h-screen flex flex-col justify-between\"",[524,1977,556],{"class":530},[524,1979,1981,1983,1986,1989,1991,1994],{"class":526,"line":1980},112,[524,1982,573],{"class":530},[524,1984,1985],{"class":534},"main",[524,1987,1988],{"class":537}," v-scope",[524,1990,541],{"class":530},[524,1992,1993],{"class":544},"\"{}\"",[524,1995,556],{"class":530},[524,1997,1999],{"class":526,"line":1998},113,[524,2000,2002],{"class":2001},"sCsY4","      \u003C!-- Messages -->\n",[524,2004,2006,2009,2012,2015,2017,2020,2022,2024,2027],{"class":526,"line":2005},114,[524,2007,2008],{"class":530},"      \u003C",[524,2010,2011],{"class":534},"div",[524,2013,2014],{"class":537}," id",[524,2016,541],{"class":530},[524,2018,2019],{"class":544},"\"messages\"",[524,2021,1970],{"class":537},[524,2023,541],{"class":530},[524,2025,2026],{"class":544},"\"flex-grow flex flex-col justify-end px-4 py-8\"",[524,2028,556],{"class":530},[524,2030,2032,2035,2037,2039,2041,2044,2047,2049,2052],{"class":526,"line":2031},115,[524,2033,2034],{"class":530},"        \u003C",[524,2036,2011],{"class":534},[524,2038,1970],{"class":537},[524,2040,541],{"class":530},[524,2042,2043],{"class":544},"\"flex items-center mb-4\"",[524,2045,2046],{"class":537}," v-for",[524,2048,541],{"class":530},[524,2050,2051],{"class":544},"\"message in store.messages\"",[524,2053,556],{"class":530},[524,2055,2057,2060,2062,2064,2066,2069],{"class":526,"line":2056},116,[524,2058,2059],{"class":530},"          \u003C",[524,2061,2011],{"class":534},[524,2063,1970],{"class":537},[524,2065,541],{"class":530},[524,2067,2068],{"class":544},"\"flex flex-col\"",[524,2070,556],{"class":530},[524,2072,2074,2077,2080,2082,2084,2087,2090,2092],{"class":526,"line":2073},117,[524,2075,2076],{"class":530},"            \u003C",[524,2078,2079],{"class":534},"p",[524,2081,1970],{"class":537},[524,2083,541],{"class":530},[524,2085,2086],{"class":544},"\"text-gray-500 mb-1 text-xs ml-10\"",[524,2088,2089],{"class":530},">{{ message.user }}\u003C/",[524,2091,2079],{"class":534},[524,2093,556],{"class":530},[524,2095,2097,2099,2101,2103,2105,2108],{"class":526,"line":2096},118,[524,2098,2076],{"class":530},[524,2100,2011],{"class":534},[524,2102,1970],{"class":537},[524,2104,541],{"class":530},[524,2106,2107],{"class":544},"\"flex items-center\"",[524,2109,556],{"class":530},[524,2111,2113,2116],{"class":526,"line":2112},119,[524,2114,2115],{"class":530},"              \u003C",[524,2117,2118],{"class":534},"img\n",[524,2120,2122,2125,2127],{"class":526,"line":2121},120,[524,2123,2124],{"class":537},"                :src",[524,2126,541],{"class":530},[524,2128,2129],{"class":544},"\"'https://www.gravatar.com/avatar/' + encodeURIComponent(message.user + rand) + '?s=512&d=monsterid'\"\n",[524,2131,2133,2136,2138],{"class":526,"line":2132},121,[524,2134,2135],{"class":537},"                alt",[524,2137,541],{"class":530},[524,2139,2140],{"class":544},"\"Avatar\"\n",[524,2142,2144,2147,2149],{"class":526,"line":2143},122,[524,2145,2146],{"class":537},"                class",[524,2148,541],{"class":530},[524,2150,2151],{"class":544},"\"w-8 h-8 rounded-full\"\n",[524,2153,2155],{"class":526,"line":2154},123,[524,2156,2157],{"class":530},"              />\n",[524,2159,2161,2163,2165,2167,2169,2172],{"class":526,"line":2160},124,[524,2162,2115],{"class":530},[524,2164,2011],{"class":534},[524,2166,1970],{"class":537},[524,2168,541],{"class":530},[524,2170,2171],{"class":544},"\"ml-2 bg-gray-800 rounded-lg p-2\"",[524,2173,556],{"class":530},[524,2175,2177,2180],{"class":526,"line":2176},125,[524,2178,2179],{"class":530},"                \u003C",[524,2181,2182],{"class":534},"p\n",[524,2184,2186,2189,2191],{"class":526,"line":2185},126,[524,2187,2188],{"class":537},"                  v-if",[524,2190,541],{"class":530},[524,2192,2193],{"class":544},"\"message.formattedText\"\n",[524,2195,2197,2200,2202],{"class":526,"line":2196},127,[524,2198,2199],{"class":537},"                  class",[524,2201,541],{"class":530},[524,2203,2204],{"class":544},"\"overflow-x-scroll\"\n",[524,2206,2208,2211,2213],{"class":526,"line":2207},128,[524,2209,2210],{"class":537},"                  v-html",[524,2212,541],{"class":530},[524,2214,2193],{"class":544},[524,2216,2218,2221,2223],{"class":526,"line":2217},129,[524,2219,2220],{"class":530},"                >\u003C/",[524,2222,2079],{"class":534},[524,2224,556],{"class":530},[524,2226,2228,2230,2232,2235,2237,2239,2242,2245,2247],{"class":526,"line":2227},130,[524,2229,2179],{"class":530},[524,2231,2079],{"class":534},[524,2233,2234],{"class":537}," v-else",[524,2236,1970],{"class":537},[524,2238,541],{"class":530},[524,2240,2241],{"class":544},"\"text-white\"",[524,2243,2244],{"class":530},">{{ message.text }}\u003C/",[524,2246,2079],{"class":534},[524,2248,556],{"class":530},[524,2250,2252,2255,2257],{"class":526,"line":2251},131,[524,2253,2254],{"class":530},"              \u003C/",[524,2256,2011],{"class":534},[524,2258,556],{"class":530},[524,2260,2262,2265,2267],{"class":526,"line":2261},132,[524,2263,2264],{"class":530},"            \u003C/",[524,2266,2011],{"class":534},[524,2268,556],{"class":530},[524,2270,2272,2274,2276,2278,2280,2283,2286,2288],{"class":526,"line":2271},133,[524,2273,2076],{"class":530},[524,2275,2079],{"class":534},[524,2277,1970],{"class":537},[524,2279,541],{"class":530},[524,2281,2282],{"class":544},"\"text-gray-500 mt-1 text-xs ml-10\"",[524,2284,2285],{"class":530},">{{ message.date }}\u003C/",[524,2287,2079],{"class":534},[524,2289,556],{"class":530},[524,2291,2293,2296,2298],{"class":526,"line":2292},134,[524,2294,2295],{"class":530},"          \u003C/",[524,2297,2011],{"class":534},[524,2299,556],{"class":530},[524,2301,2303,2306,2308],{"class":526,"line":2302},135,[524,2304,2305],{"class":530},"        \u003C/",[524,2307,2011],{"class":534},[524,2309,556],{"class":530},[524,2311,2313,2316,2318],{"class":526,"line":2312},136,[524,2314,2315],{"class":530},"      \u003C/",[524,2317,2011],{"class":534},[524,2319,556],{"class":530},[524,2321,2323],{"class":526,"line":2322},137,[524,2324,698],{"emptyLinePlaceholder":406},[524,2326,2328],{"class":526,"line":2327},138,[524,2329,2330],{"class":2001},"      \u003C!-- Chatbox -->\n",[524,2332,2334,2336,2338,2340,2342,2345],{"class":526,"line":2333},139,[524,2335,2008],{"class":530},[524,2337,2011],{"class":534},[524,2339,1970],{"class":537},[524,2341,541],{"class":530},[524,2343,2344],{"class":544},"\"bg-gray-800 px-4 py-2 flex items-center justify-between fixed bottom-0 w-full\"",[524,2346,556],{"class":530},[524,2348,2350,2352,2354,2356,2358,2361],{"class":526,"line":2349},140,[524,2351,2034],{"class":530},[524,2353,2011],{"class":534},[524,2355,1970],{"class":537},[524,2357,541],{"class":530},[524,2359,2360],{"class":544},"\"w-full min-w-6\"",[524,2362,556],{"class":530},[524,2364,2366,2368],{"class":526,"line":2365},141,[524,2367,2059],{"class":530},[524,2369,2370],{"class":534},"input\n",[524,2372,2374,2377,2379],{"class":526,"line":2373},142,[524,2375,2376],{"class":537},"            type",[524,2378,541],{"class":530},[524,2380,2381],{"class":544},"\"text\"\n",[524,2383,2385,2388,2390],{"class":526,"line":2384},143,[524,2386,2387],{"class":537},"            placeholder",[524,2389,541],{"class":530},[524,2391,2392],{"class":544},"\"Type your message...\"\n",[524,2394,2396,2399,2401],{"class":526,"line":2395},144,[524,2397,2398],{"class":537},"            class",[524,2400,541],{"class":530},[524,2402,2403],{"class":544},"\"w-full rounded-l-lg px-4 py-2 bg-gray-700 text-white focus:outline-none focus:ring focus:border-blue-300\"\n",[524,2405,2407,2410,2412],{"class":526,"line":2406},145,[524,2408,2409],{"class":537},"            @keydown.enter",[524,2411,541],{"class":530},[524,2413,2414],{"class":544},"\"send\"\n",[524,2416,2418,2421,2423],{"class":526,"line":2417},146,[524,2419,2420],{"class":537},"            v-model",[524,2422,541],{"class":530},[524,2424,2425],{"class":544},"\"store.message\"\n",[524,2427,2429],{"class":526,"line":2428},147,[524,2430,2431],{"class":530},"          />\n",[524,2433,2435,2437,2439],{"class":526,"line":2434},148,[524,2436,2305],{"class":530},[524,2438,2011],{"class":534},[524,2440,556],{"class":530},[524,2442,2444,2446,2448,2450,2452,2455],{"class":526,"line":2443},149,[524,2445,2034],{"class":530},[524,2447,2011],{"class":534},[524,2449,1970],{"class":537},[524,2451,541],{"class":530},[524,2453,2454],{"class":544},"\"flex\"",[524,2456,556],{"class":530},[524,2458,2460,2462,2465,2467,2469,2472,2475,2477,2480],{"class":526,"line":2459},150,[524,2461,2059],{"class":530},[524,2463,2464],{"class":534},"button",[524,2466,1970],{"class":537},[524,2468,541],{"class":530},[524,2470,2471],{"class":544},"\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4\"",[524,2473,2474],{"class":537}," @click",[524,2476,541],{"class":530},[524,2478,2479],{"class":544},"\"send\"",[524,2481,556],{"class":530},[524,2483,2485],{"class":526,"line":2484},151,[524,2486,2487],{"class":530},"            Send\n",[524,2489,2491,2493,2495],{"class":526,"line":2490},152,[524,2492,2295],{"class":530},[524,2494,2464],{"class":534},[524,2496,556],{"class":530},[524,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516],{"class":526,"line":2499},153,[524,2501,2059],{"class":530},[524,2503,2464],{"class":534},[524,2505,1970],{"class":537},[524,2507,541],{"class":530},[524,2509,2471],{"class":544},[524,2511,2474],{"class":537},[524,2513,541],{"class":530},[524,2515,1853],{"class":544},[524,2517,556],{"class":530},[524,2519,2521],{"class":526,"line":2520},154,[524,2522,2523],{"class":530},"            Ping\n",[524,2525,2527,2529,2531],{"class":526,"line":2526},155,[524,2528,2295],{"class":530},[524,2530,2464],{"class":534},[524,2532,556],{"class":530},[524,2534,2536,2538,2540,2542,2544,2546,2548,2550,2553],{"class":526,"line":2535},156,[524,2537,2059],{"class":530},[524,2539,2464],{"class":534},[524,2541,1970],{"class":537},[524,2543,541],{"class":530},[524,2545,2471],{"class":544},[524,2547,2474],{"class":537},[524,2549,541],{"class":530},[524,2551,2552],{"class":544},"\"connect\"",[524,2554,556],{"class":530},[524,2556,2558],{"class":526,"line":2557},157,[524,2559,2560],{"class":530},"            Reconnect\n",[524,2562,2564,2566,2568],{"class":526,"line":2563},158,[524,2565,2295],{"class":530},[524,2567,2464],{"class":534},[524,2569,556],{"class":530},[524,2571,2573,2575],{"class":526,"line":2572},159,[524,2574,2059],{"class":530},[524,2576,2577],{"class":534},"button\n",[524,2579,2581,2583,2585],{"class":526,"line":2580},160,[524,2582,2398],{"class":537},[524,2584,541],{"class":530},[524,2586,2587],{"class":544},"\"bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-r-lg\"\n",[524,2589,2591,2594,2596],{"class":526,"line":2590},161,[524,2592,2593],{"class":537},"            @click",[524,2595,541],{"class":530},[524,2597,2598],{"class":544},"\"clear\"\n",[524,2600,2602],{"class":526,"line":2601},162,[524,2603,2604],{"class":530},"          >\n",[524,2606,2608],{"class":526,"line":2607},163,[524,2609,2610],{"class":530},"            Clear\n",[524,2612,2614,2616,2618],{"class":526,"line":2613},164,[524,2615,2295],{"class":530},[524,2617,2464],{"class":534},[524,2619,556],{"class":530},[524,2621,2623,2625,2627],{"class":526,"line":2622},165,[524,2624,2305],{"class":530},[524,2626,2011],{"class":534},[524,2628,556],{"class":530},[524,2630,2632,2634,2636],{"class":526,"line":2631},166,[524,2633,2315],{"class":530},[524,2635,2011],{"class":534},[524,2637,556],{"class":530},[524,2639,2641,2643,2645],{"class":526,"line":2640},167,[524,2642,653],{"class":530},[524,2644,1985],{"class":534},[524,2646,556],{"class":530},[524,2648,2650,2652,2654],{"class":526,"line":2649},168,[524,2651,1955],{"class":530},[524,2653,1967],{"class":534},[524,2655,556],{"class":530},[524,2657,2659,2662,2664],{"class":526,"line":2658},169,[524,2660,2661],{"class":530},"\u003C/",[524,2663,519],{"class":534},[524,2665,556],{"class":530},[524,2667,2669],{"class":526,"line":2668},170,[524,2670,2671],{"class":530},"`\n",[514,2673,2678],{"className":2674,"code":2675,"filename":2676,"language":2677,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverDir: \"./\",\n  renderer: { static: true },\n  features: { websocket: true },\n});\n","nitro.config.ts","ts",[521,2679,2680,2695,2699,2712,2722,2732,2741],{"__ignoreMap":5},[524,2681,2682,2685,2688,2690,2693],{"class":526,"line":527},[524,2683,2684],{"class":680},"import",[524,2686,2687],{"class":530}," { defineConfig } ",[524,2689,687],{"class":680},[524,2691,2692],{"class":544}," \"nitro\"",[524,2694,641],{"class":530},[524,2696,2697],{"class":526,"line":559},[524,2698,698],{"emptyLinePlaceholder":406},[524,2700,2701,2704,2707,2710],{"class":526,"line":570},[524,2702,2703],{"class":680},"export",[524,2705,2706],{"class":680}," default",[524,2708,2709],{"class":537}," defineConfig",[524,2711,730],{"class":530},[524,2713,2714,2717,2720],{"class":526,"line":586},[524,2715,2716],{"class":530},"  serverDir: ",[524,2718,2719],{"class":544},"\"./\"",[524,2721,742],{"class":530},[524,2723,2724,2727,2729],{"class":526,"line":609},[524,2725,2726],{"class":530},"  renderer: { static: ",[524,2728,511],{"class":631},[524,2730,2731],{"class":530}," },\n",[524,2733,2734,2737,2739],{"class":526,"line":619},[524,2735,2736],{"class":530},"  features: { websocket: ",[524,2738,511],{"class":631},[524,2740,2731],{"class":530},[524,2742,2743],{"class":526,"line":628},[524,2744,2745],{"class":530},"});\n",[514,2747,2752],{"className":2748,"code":2749,"filename":2750,"language":2751,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"nitro dev\",\n    \"build\": \"nitro build\"\n  },\n  \"devDependencies\": {\n    \"nitro\": \"latest\"\n  }\n}\n","package.json","json",[521,2753,2754,2759,2770,2778,2790,2800,2805,2812,2822,2827],{"__ignoreMap":5},[524,2755,2756],{"class":526,"line":527},[524,2757,2758],{"class":530},"{\n",[524,2760,2761,2764,2766,2768],{"class":526,"line":559},[524,2762,2763],{"class":631},"  \"type\"",[524,2765,635],{"class":530},[524,2767,672],{"class":544},[524,2769,742],{"class":530},[524,2771,2772,2775],{"class":526,"line":570},[524,2773,2774],{"class":631},"  \"scripts\"",[524,2776,2777],{"class":530},": {\n",[524,2779,2780,2783,2785,2788],{"class":526,"line":586},[524,2781,2782],{"class":631},"    \"dev\"",[524,2784,635],{"class":530},[524,2786,2787],{"class":544},"\"nitro dev\"",[524,2789,742],{"class":530},[524,2791,2792,2795,2797],{"class":526,"line":609},[524,2793,2794],{"class":631},"    \"build\"",[524,2796,635],{"class":530},[524,2798,2799],{"class":544},"\"nitro build\"\n",[524,2801,2802],{"class":526,"line":619},[524,2803,2804],{"class":530},"  },\n",[524,2806,2807,2810],{"class":526,"line":628},[524,2808,2809],{"class":631},"  \"devDependencies\"",[524,2811,2777],{"class":530},[524,2813,2814,2817,2819],{"class":526,"line":644},[524,2815,2816],{"class":631},"    \"nitro\"",[524,2818,635],{"class":530},[524,2820,2821],{"class":544},"\"latest\"\n",[524,2823,2824],{"class":526,"line":650},[524,2825,2826],{"class":530},"  }\n",[524,2828,2829],{"class":526,"line":660},[524,2830,2831],{"class":530},"}\n",[514,2833,2836],{"className":2748,"code":2834,"filename":2835,"language":2751,"meta":5,"style":5},"{\n  \"extends\": \"nitro/tsconfig\"\n}\n","tsconfig.json",[521,2837,2838,2842,2852],{"__ignoreMap":5},[524,2839,2840],{"class":526,"line":527},[524,2841,2758],{"class":530},[524,2843,2844,2847,2849],{"class":526,"line":559},[524,2845,2846],{"class":631},"  \"extends\"",[524,2848,635],{"class":530},[524,2850,2851],{"class":544},"\"nitro/tsconfig\"\n",[524,2853,2854],{"class":526,"line":570},[524,2855,2831],{"class":530},[514,2857,2860],{"className":2674,"code":2858,"filename":2859,"language":2677,"meta":5,"style":5},"import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro/vite\";\n\nexport default defineConfig({ plugins: [nitro()] });\n","vite.config.ts",[521,2861,2862,2875,2889,2893],{"__ignoreMap":5},[524,2863,2864,2866,2868,2870,2873],{"class":526,"line":527},[524,2865,2684],{"class":680},[524,2867,2687],{"class":530},[524,2869,687],{"class":680},[524,2871,2872],{"class":544}," \"vite\"",[524,2874,641],{"class":530},[524,2876,2877,2879,2882,2884,2887],{"class":526,"line":559},[524,2878,2684],{"class":680},[524,2880,2881],{"class":530}," { nitro } ",[524,2883,687],{"class":680},[524,2885,2886],{"class":544}," \"nitro/vite\"",[524,2888,641],{"class":530},[524,2890,2891],{"class":526,"line":570},[524,2892,698],{"emptyLinePlaceholder":406},[524,2894,2895,2897,2899,2901,2904,2907],{"class":526,"line":586},[524,2896,2703],{"class":680},[524,2898,2706],{"class":680},[524,2900,2709],{"class":537},[524,2902,2903],{"class":530},"({ plugins: [",[524,2905,2906],{"class":537},"nitro",[524,2908,2909],{"class":530},"()] });\n",[514,2911,2913],{"className":2674,"code":2912,"filename":512,"language":2677,"meta":5,"style":5},"import { defineWebSocketHandler } from \"nitro\";\n\nexport default defineWebSocketHandler({\n  open(peer) {\n    peer.send({ user: \"server\", message: `Welcome ${peer}!` });\n    peer.publish(\"chat\", { user: \"server\", message: `${peer} joined!` });\n    peer.subscribe(\"chat\");\n  },\n  message(peer, message) {\n    if (message.text().includes(\"ping\")) {\n      peer.send({ user: \"server\", message: \"pong\" });\n    } else {\n      const msg = {\n        user: peer.toString(),\n        message: message.toString(),\n      };\n      peer.send(msg); // echo\n      peer.publish(\"chat\", msg);\n    }\n  },\n  close(peer) {\n    peer.publish(\"chat\", { user: \"server\", message: `${peer} left!` });\n  },\n});\n",[521,2914,2915,2928,2932,2943,2956,2983,3012,3025,3029,3044,3065,3083,3093,3104,3114,3123,3127,3139,3152,3157,3161,3172,3197,3201],{"__ignoreMap":5},[524,2916,2917,2919,2922,2924,2926],{"class":526,"line":527},[524,2918,2684],{"class":680},[524,2920,2921],{"class":530}," { defineWebSocketHandler } ",[524,2923,687],{"class":680},[524,2925,2692],{"class":544},[524,2927,641],{"class":530},[524,2929,2930],{"class":526,"line":559},[524,2931,698],{"emptyLinePlaceholder":406},[524,2933,2934,2936,2938,2941],{"class":526,"line":570},[524,2935,2703],{"class":680},[524,2937,2706],{"class":680},[524,2939,2940],{"class":537}," defineWebSocketHandler",[524,2942,730],{"class":530},[524,2944,2945,2948,2950,2953],{"class":526,"line":586},[524,2946,2947],{"class":537},"  open",[524,2949,810],{"class":530},[524,2951,2952],{"class":1116},"peer",[524,2954,2955],{"class":530},") {\n",[524,2957,2958,2961,2963,2966,2969,2972,2975,2977,2980],{"class":526,"line":609},[524,2959,2960],{"class":530},"    peer.",[524,2962,1779],{"class":537},[524,2964,2965],{"class":530},"({ user: ",[524,2967,2968],{"class":544},"\"server\"",[524,2970,2971],{"class":530},", message: ",[524,2973,2974],{"class":544},"`Welcome ${",[524,2976,2952],{"class":530},[524,2978,2979],{"class":544},"}!`",[524,2981,2982],{"class":530}," });\n",[524,2984,2985,2987,2990,2992,2995,2998,3000,3002,3005,3007,3010],{"class":526,"line":619},[524,2986,2960],{"class":530},[524,2988,2989],{"class":537},"publish",[524,2991,810],{"class":530},[524,2993,2994],{"class":544},"\"chat\"",[524,2996,2997],{"class":530},", { user: ",[524,2999,2968],{"class":544},[524,3001,2971],{"class":530},[524,3003,3004],{"class":544},"`${",[524,3006,2952],{"class":530},[524,3008,3009],{"class":544},"} joined!`",[524,3011,2982],{"class":530},[524,3013,3014,3016,3019,3021,3023],{"class":526,"line":628},[524,3015,2960],{"class":530},[524,3017,3018],{"class":537},"subscribe",[524,3020,810],{"class":530},[524,3022,2994],{"class":544},[524,3024,816],{"class":530},[524,3026,3027],{"class":526,"line":644},[524,3028,2804],{"class":530},[524,3030,3031,3034,3036,3038,3040,3042],{"class":526,"line":650},[524,3032,3033],{"class":537},"  message",[524,3035,810],{"class":530},[524,3037,2952],{"class":1116},[524,3039,1030],{"class":530},[524,3041,1521],{"class":1116},[524,3043,2955],{"class":530},[524,3045,3046,3049,3052,3054,3056,3059,3061,3063],{"class":526,"line":660},[524,3047,3048],{"class":680},"    if",[524,3050,3051],{"class":530}," (message.",[524,3053,1500],{"class":537},[524,3055,1213],{"class":530},[524,3057,3058],{"class":537},"includes",[524,3060,810],{"class":530},[524,3062,1853],{"class":544},[524,3064,949],{"class":530},[524,3066,3067,3070,3072,3074,3076,3078,3081],{"class":526,"line":677},[524,3068,3069],{"class":530},"      peer.",[524,3071,1779],{"class":537},[524,3073,2965],{"class":530},[524,3075,2968],{"class":544},[524,3077,2971],{"class":530},[524,3079,3080],{"class":544},"\"pong\"",[524,3082,2982],{"class":530},[524,3084,3085,3088,3091],{"class":526,"line":695},[524,3086,3087],{"class":530},"    } ",[524,3089,3090],{"class":680},"else",[524,3092,625],{"class":530},[524,3094,3095,3097,3100,3102],{"class":526,"line":701},[524,3096,718],{"class":680},[524,3098,3099],{"class":631}," msg",[524,3101,724],{"class":680},[524,3103,625],{"class":530},[524,3105,3106,3109,3112],{"class":526,"line":710},[524,3107,3108],{"class":530},"        user: peer.",[524,3110,3111],{"class":537},"toString",[524,3113,1219],{"class":530},[524,3115,3116,3119,3121],{"class":526,"line":715},[524,3117,3118],{"class":530},"        message: message.",[524,3120,3111],{"class":537},[524,3122,1219],{"class":530},[524,3124,3125],{"class":526,"line":733},[524,3126,873],{"class":530},[524,3128,3129,3131,3133,3136],{"class":526,"line":745},[524,3130,3069],{"class":530},[524,3132,1779],{"class":537},[524,3134,3135],{"class":530},"(msg); ",[524,3137,3138],{"class":2001},"// echo\n",[524,3140,3141,3143,3145,3147,3149],{"class":526,"line":751},[524,3142,3069],{"class":530},[524,3144,2989],{"class":537},[524,3146,810],{"class":530},[524,3148,2994],{"class":544},[524,3150,3151],{"class":530},", msg);\n",[524,3153,3154],{"class":526,"line":757},[524,3155,3156],{"class":530},"    }\n",[524,3158,3159],{"class":526,"line":762},[524,3160,2804],{"class":530},[524,3162,3163,3166,3168,3170],{"class":526,"line":780},[524,3164,3165],{"class":537},"  close",[524,3167,810],{"class":530},[524,3169,2952],{"class":1116},[524,3171,2955],{"class":530},[524,3173,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3195],{"class":526,"line":793},[524,3175,2960],{"class":530},[524,3177,2989],{"class":537},[524,3179,810],{"class":530},[524,3181,2994],{"class":544},[524,3183,2997],{"class":530},[524,3185,2968],{"class":544},[524,3187,2971],{"class":530},[524,3189,3004],{"class":544},[524,3191,2952],{"class":530},[524,3193,3194],{"class":544},"} left!`",[524,3196,2982],{"class":530},[524,3198,3199],{"class":526,"line":819},[524,3200,2804],{"class":530},[524,3202,3203],{"class":526,"line":830},[524,3204,2745],{"class":530},[2079,3206,3207],{},"This example implements a simple chat room using WebSockets. Clients connect, send messages, and receive messages from other users in real-time. The server broadcasts messages to all connected clients using pub/sub channels.",[3209,3210,3212],"h2",{"id":3211},"websocket-handler","WebSocket Handler",[2079,3214,3215,3216,1008],{},"Create a WebSocket route using ",[521,3217,3218],{},"defineWebSocketHandler",[514,3220,3221],{"className":2674,"code":2912,"filename":512,"language":2677,"meta":5,"style":5},[521,3222,3223,3235,3239,3249,3259,3279,3303,3315,3319,3333,3351,3367,3375,3385,3393,3401,3405,3415,3427,3431,3435,3445,3469,3473],{"__ignoreMap":5},[524,3224,3225,3227,3229,3231,3233],{"class":526,"line":527},[524,3226,2684],{"class":680},[524,3228,2921],{"class":530},[524,3230,687],{"class":680},[524,3232,2692],{"class":544},[524,3234,641],{"class":530},[524,3236,3237],{"class":526,"line":559},[524,3238,698],{"emptyLinePlaceholder":406},[524,3240,3241,3243,3245,3247],{"class":526,"line":570},[524,3242,2703],{"class":680},[524,3244,2706],{"class":680},[524,3246,2940],{"class":537},[524,3248,730],{"class":530},[524,3250,3251,3253,3255,3257],{"class":526,"line":586},[524,3252,2947],{"class":537},[524,3254,810],{"class":530},[524,3256,2952],{"class":1116},[524,3258,2955],{"class":530},[524,3260,3261,3263,3265,3267,3269,3271,3273,3275,3277],{"class":526,"line":609},[524,3262,2960],{"class":530},[524,3264,1779],{"class":537},[524,3266,2965],{"class":530},[524,3268,2968],{"class":544},[524,3270,2971],{"class":530},[524,3272,2974],{"class":544},[524,3274,2952],{"class":530},[524,3276,2979],{"class":544},[524,3278,2982],{"class":530},[524,3280,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301],{"class":526,"line":619},[524,3282,2960],{"class":530},[524,3284,2989],{"class":537},[524,3286,810],{"class":530},[524,3288,2994],{"class":544},[524,3290,2997],{"class":530},[524,3292,2968],{"class":544},[524,3294,2971],{"class":530},[524,3296,3004],{"class":544},[524,3298,2952],{"class":530},[524,3300,3009],{"class":544},[524,3302,2982],{"class":530},[524,3304,3305,3307,3309,3311,3313],{"class":526,"line":628},[524,3306,2960],{"class":530},[524,3308,3018],{"class":537},[524,3310,810],{"class":530},[524,3312,2994],{"class":544},[524,3314,816],{"class":530},[524,3316,3317],{"class":526,"line":644},[524,3318,2804],{"class":530},[524,3320,3321,3323,3325,3327,3329,3331],{"class":526,"line":650},[524,3322,3033],{"class":537},[524,3324,810],{"class":530},[524,3326,2952],{"class":1116},[524,3328,1030],{"class":530},[524,3330,1521],{"class":1116},[524,3332,2955],{"class":530},[524,3334,3335,3337,3339,3341,3343,3345,3347,3349],{"class":526,"line":660},[524,3336,3048],{"class":680},[524,3338,3051],{"class":530},[524,3340,1500],{"class":537},[524,3342,1213],{"class":530},[524,3344,3058],{"class":537},[524,3346,810],{"class":530},[524,3348,1853],{"class":544},[524,3350,949],{"class":530},[524,3352,3353,3355,3357,3359,3361,3363,3365],{"class":526,"line":677},[524,3354,3069],{"class":530},[524,3356,1779],{"class":537},[524,3358,2965],{"class":530},[524,3360,2968],{"class":544},[524,3362,2971],{"class":530},[524,3364,3080],{"class":544},[524,3366,2982],{"class":530},[524,3368,3369,3371,3373],{"class":526,"line":695},[524,3370,3087],{"class":530},[524,3372,3090],{"class":680},[524,3374,625],{"class":530},[524,3376,3377,3379,3381,3383],{"class":526,"line":701},[524,3378,718],{"class":680},[524,3380,3099],{"class":631},[524,3382,724],{"class":680},[524,3384,625],{"class":530},[524,3386,3387,3389,3391],{"class":526,"line":710},[524,3388,3108],{"class":530},[524,3390,3111],{"class":537},[524,3392,1219],{"class":530},[524,3394,3395,3397,3399],{"class":526,"line":715},[524,3396,3118],{"class":530},[524,3398,3111],{"class":537},[524,3400,1219],{"class":530},[524,3402,3403],{"class":526,"line":733},[524,3404,873],{"class":530},[524,3406,3407,3409,3411,3413],{"class":526,"line":745},[524,3408,3069],{"class":530},[524,3410,1779],{"class":537},[524,3412,3135],{"class":530},[524,3414,3138],{"class":2001},[524,3416,3417,3419,3421,3423,3425],{"class":526,"line":751},[524,3418,3069],{"class":530},[524,3420,2989],{"class":537},[524,3422,810],{"class":530},[524,3424,2994],{"class":544},[524,3426,3151],{"class":530},[524,3428,3429],{"class":526,"line":757},[524,3430,3156],{"class":530},[524,3432,3433],{"class":526,"line":762},[524,3434,2804],{"class":530},[524,3436,3437,3439,3441,3443],{"class":526,"line":780},[524,3438,3165],{"class":537},[524,3440,810],{"class":530},[524,3442,2952],{"class":1116},[524,3444,2955],{"class":530},[524,3446,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467],{"class":526,"line":793},[524,3448,2960],{"class":530},[524,3450,2989],{"class":537},[524,3452,810],{"class":530},[524,3454,2994],{"class":544},[524,3456,2997],{"class":530},[524,3458,2968],{"class":544},[524,3460,2971],{"class":530},[524,3462,3004],{"class":544},[524,3464,2952],{"class":530},[524,3466,3194],{"class":544},[524,3468,2982],{"class":530},[524,3470,3471],{"class":526,"line":819},[524,3472,2804],{"class":530},[524,3474,3475],{"class":526,"line":830},[524,3476,2745],{"class":530},[2079,3478,3479,3480,3483],{},"Different hooks are exposed by ",[521,3481,3482],{},"defineWebSocketHandler()"," to integrate with different parts of the websocket lifecycle.",[3209,3485,3487],{"id":3486},"learn-more","Learn More",[3489,3490,3491,3497],"ul",{},[3492,3493,3494],"li",{},[3495,3496,23],"a",{"href":24},[3492,3498,3499],{},[3495,3500,3504],{"href":3501,"rel":3502},"https://crossws.h3.dev/guide/hooks",[3503],"nofollow","crossws Documentation",[614,3506,3507],{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}",{"title":5,"searchDepth":559,"depth":559,"links":3509},[3510,3511],{"id":3211,"depth":559,"text":3212},{"id":3486,"depth":559,"text":3487},"md",{"automd":406,"category":407,"icon":386},{"icon":386},{"title":63,"description":501},"ciDTLwcYCyvj-IgbIzzCnI-F2RbLfW_YvBzuRvmTrVU",[3518,3519],{"title":379,"path":380,"stem":381,"description":498,"icon":382,"children":-1},{"title":388,"path":389,"stem":393,"description":5,"icon":394,"children":-1},1776373825301]