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