[{"data":1,"prerenderedAt":687},["ShallowReactive",2],{"navigation":3,"/adapters/deno":56,"/adapters/deno-surround":682},[4,30],{"title":5,"_path":6,"children":7,"icon":9},"Getting Started","/guide",[8,10,14,18,22,26],{"title":5,"_path":6,"icon":9},"ph:book-open-duotone",{"title":11,"_path":12,"icon":13},"Hooks","/guide/hooks","material-symbols-light:data-object",{"title":15,"_path":16,"icon":17},"Peer","/guide/peer","mynaui:api",{"title":19,"_path":20,"icon":21},"Message","/guide/message","solar:letter-line-duotone",{"title":23,"_path":24,"icon":25},"Pub / Sub","/guide/pubsub","simple-icons:googlepubsub",{"title":27,"_path":28,"icon":29},"Resolver API","/guide/resolver","tabler:route",{"title":31,"_path":32,"children":33,"icon":35},"Adapters","/adapters",[34,36,40,44,48,52],{"title":31,"_path":32,"icon":35},"emojione-monotone:electric-plug",{"title":37,"_path":38,"icon":39},"Bun","/adapters/bun","simple-icons:bun",{"title":41,"_path":42,"icon":43},"Cloudflare","/adapters/cloudflare","devicon-plain:cloudflareworkers",{"title":45,"_path":46,"icon":47},"Deno","/adapters/deno","teenyicons:deno-solid",{"title":49,"_path":50,"icon":51},"Node.js","/adapters/node","akar-icons:node-fill",{"title":53,"_path":54,"icon":55},"SSE","/adapters/sse","clarity:two-way-arrows-line",{"_path":46,"_dir":57,"_draft":58,"_partial":58,"_locale":59,"title":45,"description":60,"icon":47,"body":61,"_type":676,"_id":677,"_source":678,"_file":679,"_stem":680,"_extension":681},"adapters",false,"","Integrate crossws with Deno.",{"type":62,"children":63,"toc":674},"root",[64,89,634,668],{"type":65,"tag":66,"props":67,"children":68},"element","p",{},[69,72,79,81,87],{"type":70,"value":71},"text","To integrate crossws with your Deno server, you need to check for the ",{"type":65,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":70,"value":78},"upgrade",{"type":70,"value":80}," header and then call ",{"type":65,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":70,"value":86},"handleUpgrade",{"type":70,"value":88}," method from the adapter passing the incoming request object. The returned value is the server upgrade response.",{"type":65,"tag":90,"props":91,"children":95},"pre",{"className":92,"code":93,"language":94,"meta":59,"style":59},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import crossws from \"crossws/adapters/deno\";\n\nconst ws = crossws({\n  hooks: {\n    message: console.log,\n  },\n});\n\nDeno.serve({ port: 3000 }, (request, info) => {\n  if (request.headers.get(\"upgrade\") === \"websocket\") {\n    return ws.handleUpgrade(request, info);\n  }\n  return new Response(\n    `\u003Cscript>new WebSocket(\"ws://localhost:3000\").addEventListener(\"open\", (e) => e.target.send(\"Hello from client!\"));\u003C/script>`,\n    { headers: { \"content-type\": \"text/html\" } },\n  );\n});\n","ts",[96],{"type":65,"tag":73,"props":97,"children":98},{"__ignoreMap":59},[99,144,154,190,210,243,252,270,278,358,440,486,495,519,542,605,618],{"type":65,"tag":100,"props":101,"children":104},"span",{"class":102,"line":103},"line",1,[105,111,117,122,128,134,139],{"type":65,"tag":100,"props":106,"children":108},{"style":107},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[109],{"type":70,"value":110},"import",{"type":65,"tag":100,"props":112,"children":114},{"style":113},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[115],{"type":70,"value":116}," crossws ",{"type":65,"tag":100,"props":118,"children":119},{"style":107},[120],{"type":70,"value":121},"from",{"type":65,"tag":100,"props":123,"children":125},{"style":124},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[126],{"type":70,"value":127}," \"",{"type":65,"tag":100,"props":129,"children":131},{"style":130},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[132],{"type":70,"value":133},"crossws/adapters/deno",{"type":65,"tag":100,"props":135,"children":136},{"style":124},[137],{"type":70,"value":138},"\"",{"type":65,"tag":100,"props":140,"children":141},{"style":124},[142],{"type":70,"value":143},";\n",{"type":65,"tag":100,"props":145,"children":147},{"class":102,"line":146},2,[148],{"type":65,"tag":100,"props":149,"children":151},{"emptyLinePlaceholder":150},true,[152],{"type":70,"value":153},"\n",{"type":65,"tag":100,"props":155,"children":157},{"class":102,"line":156},3,[158,164,169,174,180,185],{"type":65,"tag":100,"props":159,"children":161},{"style":160},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[162],{"type":70,"value":163},"const",{"type":65,"tag":100,"props":165,"children":166},{"style":113},[167],{"type":70,"value":168}," ws ",{"type":65,"tag":100,"props":170,"children":171},{"style":124},[172],{"type":70,"value":173},"=",{"type":65,"tag":100,"props":175,"children":177},{"style":176},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[178],{"type":70,"value":179}," crossws",{"type":65,"tag":100,"props":181,"children":182},{"style":113},[183],{"type":70,"value":184},"(",{"type":65,"tag":100,"props":186,"children":187},{"style":124},[188],{"type":70,"value":189},"{\n",{"type":65,"tag":100,"props":191,"children":193},{"class":102,"line":192},4,[194,200,205],{"type":65,"tag":100,"props":195,"children":197},{"style":196},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[198],{"type":70,"value":199},"  hooks",{"type":65,"tag":100,"props":201,"children":202},{"style":124},[203],{"type":70,"value":204},":",{"type":65,"tag":100,"props":206,"children":207},{"style":124},[208],{"type":70,"value":209}," {\n",{"type":65,"tag":100,"props":211,"children":213},{"class":102,"line":212},5,[214,219,223,228,233,238],{"type":65,"tag":100,"props":215,"children":216},{"style":196},[217],{"type":70,"value":218},"    message",{"type":65,"tag":100,"props":220,"children":221},{"style":124},[222],{"type":70,"value":204},{"type":65,"tag":100,"props":224,"children":225},{"style":113},[226],{"type":70,"value":227}," console",{"type":65,"tag":100,"props":229,"children":230},{"style":124},[231],{"type":70,"value":232},".",{"type":65,"tag":100,"props":234,"children":235},{"style":113},[236],{"type":70,"value":237},"log",{"type":65,"tag":100,"props":239,"children":240},{"style":124},[241],{"type":70,"value":242},",\n",{"type":65,"tag":100,"props":244,"children":246},{"class":102,"line":245},6,[247],{"type":65,"tag":100,"props":248,"children":249},{"style":124},[250],{"type":70,"value":251},"  },\n",{"type":65,"tag":100,"props":253,"children":255},{"class":102,"line":254},7,[256,261,266],{"type":65,"tag":100,"props":257,"children":258},{"style":124},[259],{"type":70,"value":260},"}",{"type":65,"tag":100,"props":262,"children":263},{"style":113},[264],{"type":70,"value":265},")",{"type":65,"tag":100,"props":267,"children":268},{"style":124},[269],{"type":70,"value":143},{"type":65,"tag":100,"props":271,"children":273},{"class":102,"line":272},8,[274],{"type":65,"tag":100,"props":275,"children":276},{"emptyLinePlaceholder":150},[277],{"type":70,"value":153},{"type":65,"tag":100,"props":279,"children":281},{"class":102,"line":280},9,[282,286,290,295,299,304,309,313,319,324,329,335,340,345,349,354],{"type":65,"tag":100,"props":283,"children":284},{"style":113},[285],{"type":70,"value":45},{"type":65,"tag":100,"props":287,"children":288},{"style":124},[289],{"type":70,"value":232},{"type":65,"tag":100,"props":291,"children":292},{"style":176},[293],{"type":70,"value":294},"serve",{"type":65,"tag":100,"props":296,"children":297},{"style":113},[298],{"type":70,"value":184},{"type":65,"tag":100,"props":300,"children":301},{"style":124},[302],{"type":70,"value":303},"{",{"type":65,"tag":100,"props":305,"children":306},{"style":196},[307],{"type":70,"value":308}," port",{"type":65,"tag":100,"props":310,"children":311},{"style":124},[312],{"type":70,"value":204},{"type":65,"tag":100,"props":314,"children":316},{"style":315},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[317],{"type":70,"value":318}," 3000",{"type":65,"tag":100,"props":320,"children":321},{"style":124},[322],{"type":70,"value":323}," },",{"type":65,"tag":100,"props":325,"children":326},{"style":124},[327],{"type":70,"value":328}," (",{"type":65,"tag":100,"props":330,"children":332},{"style":331},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[333],{"type":70,"value":334},"request",{"type":65,"tag":100,"props":336,"children":337},{"style":124},[338],{"type":70,"value":339},",",{"type":65,"tag":100,"props":341,"children":342},{"style":331},[343],{"type":70,"value":344}," info",{"type":65,"tag":100,"props":346,"children":347},{"style":124},[348],{"type":70,"value":265},{"type":65,"tag":100,"props":350,"children":351},{"style":160},[352],{"type":70,"value":353}," =>",{"type":65,"tag":100,"props":355,"children":356},{"style":124},[357],{"type":70,"value":209},{"type":65,"tag":100,"props":359,"children":361},{"class":102,"line":360},10,[362,367,371,375,379,384,388,393,397,401,405,409,414,419,423,428,432,436],{"type":65,"tag":100,"props":363,"children":364},{"style":107},[365],{"type":70,"value":366},"  if",{"type":65,"tag":100,"props":368,"children":369},{"style":196},[370],{"type":70,"value":328},{"type":65,"tag":100,"props":372,"children":373},{"style":113},[374],{"type":70,"value":334},{"type":65,"tag":100,"props":376,"children":377},{"style":124},[378],{"type":70,"value":232},{"type":65,"tag":100,"props":380,"children":381},{"style":113},[382],{"type":70,"value":383},"headers",{"type":65,"tag":100,"props":385,"children":386},{"style":124},[387],{"type":70,"value":232},{"type":65,"tag":100,"props":389,"children":390},{"style":176},[391],{"type":70,"value":392},"get",{"type":65,"tag":100,"props":394,"children":395},{"style":196},[396],{"type":70,"value":184},{"type":65,"tag":100,"props":398,"children":399},{"style":124},[400],{"type":70,"value":138},{"type":65,"tag":100,"props":402,"children":403},{"style":130},[404],{"type":70,"value":78},{"type":65,"tag":100,"props":406,"children":407},{"style":124},[408],{"type":70,"value":138},{"type":65,"tag":100,"props":410,"children":411},{"style":196},[412],{"type":70,"value":413},") ",{"type":65,"tag":100,"props":415,"children":416},{"style":124},[417],{"type":70,"value":418},"===",{"type":65,"tag":100,"props":420,"children":421},{"style":124},[422],{"type":70,"value":127},{"type":65,"tag":100,"props":424,"children":425},{"style":130},[426],{"type":70,"value":427},"websocket",{"type":65,"tag":100,"props":429,"children":430},{"style":124},[431],{"type":70,"value":138},{"type":65,"tag":100,"props":433,"children":434},{"style":196},[435],{"type":70,"value":413},{"type":65,"tag":100,"props":437,"children":438},{"style":124},[439],{"type":70,"value":189},{"type":65,"tag":100,"props":441,"children":443},{"class":102,"line":442},11,[444,449,454,458,462,466,470,474,478,482],{"type":65,"tag":100,"props":445,"children":446},{"style":107},[447],{"type":70,"value":448},"    return",{"type":65,"tag":100,"props":450,"children":451},{"style":113},[452],{"type":70,"value":453}," ws",{"type":65,"tag":100,"props":455,"children":456},{"style":124},[457],{"type":70,"value":232},{"type":65,"tag":100,"props":459,"children":460},{"style":176},[461],{"type":70,"value":86},{"type":65,"tag":100,"props":463,"children":464},{"style":196},[465],{"type":70,"value":184},{"type":65,"tag":100,"props":467,"children":468},{"style":113},[469],{"type":70,"value":334},{"type":65,"tag":100,"props":471,"children":472},{"style":124},[473],{"type":70,"value":339},{"type":65,"tag":100,"props":475,"children":476},{"style":113},[477],{"type":70,"value":344},{"type":65,"tag":100,"props":479,"children":480},{"style":196},[481],{"type":70,"value":265},{"type":65,"tag":100,"props":483,"children":484},{"style":124},[485],{"type":70,"value":143},{"type":65,"tag":100,"props":487,"children":489},{"class":102,"line":488},12,[490],{"type":65,"tag":100,"props":491,"children":492},{"style":124},[493],{"type":70,"value":494},"  }\n",{"type":65,"tag":100,"props":496,"children":498},{"class":102,"line":497},13,[499,504,509,514],{"type":65,"tag":100,"props":500,"children":501},{"style":107},[502],{"type":70,"value":503},"  return",{"type":65,"tag":100,"props":505,"children":506},{"style":124},[507],{"type":70,"value":508}," new",{"type":65,"tag":100,"props":510,"children":511},{"style":176},[512],{"type":70,"value":513}," Response",{"type":65,"tag":100,"props":515,"children":516},{"style":196},[517],{"type":70,"value":518},"(\n",{"type":65,"tag":100,"props":520,"children":522},{"class":102,"line":521},14,[523,528,533,538],{"type":65,"tag":100,"props":524,"children":525},{"style":124},[526],{"type":70,"value":527},"    `",{"type":65,"tag":100,"props":529,"children":530},{"style":130},[531],{"type":70,"value":532},"\u003Cscript>new WebSocket(\"ws://localhost:3000\").addEventListener(\"open\", (e) => e.target.send(\"Hello from client!\"));\u003C/script>",{"type":65,"tag":100,"props":534,"children":535},{"style":124},[536],{"type":70,"value":537},"`",{"type":65,"tag":100,"props":539,"children":540},{"style":124},[541],{"type":70,"value":242},{"type":65,"tag":100,"props":543,"children":545},{"class":102,"line":544},15,[546,551,556,560,565,569,574,578,582,586,591,595,600],{"type":65,"tag":100,"props":547,"children":548},{"style":124},[549],{"type":70,"value":550},"    {",{"type":65,"tag":100,"props":552,"children":553},{"style":196},[554],{"type":70,"value":555}," headers",{"type":65,"tag":100,"props":557,"children":558},{"style":124},[559],{"type":70,"value":204},{"type":65,"tag":100,"props":561,"children":562},{"style":124},[563],{"type":70,"value":564}," {",{"type":65,"tag":100,"props":566,"children":567},{"style":124},[568],{"type":70,"value":127},{"type":65,"tag":100,"props":570,"children":571},{"style":196},[572],{"type":70,"value":573},"content-type",{"type":65,"tag":100,"props":575,"children":576},{"style":124},[577],{"type":70,"value":138},{"type":65,"tag":100,"props":579,"children":580},{"style":124},[581],{"type":70,"value":204},{"type":65,"tag":100,"props":583,"children":584},{"style":124},[585],{"type":70,"value":127},{"type":65,"tag":100,"props":587,"children":588},{"style":130},[589],{"type":70,"value":590},"text/html",{"type":65,"tag":100,"props":592,"children":593},{"style":124},[594],{"type":70,"value":138},{"type":65,"tag":100,"props":596,"children":597},{"style":124},[598],{"type":70,"value":599}," }",{"type":65,"tag":100,"props":601,"children":602},{"style":124},[603],{"type":70,"value":604}," },\n",{"type":65,"tag":100,"props":606,"children":608},{"class":102,"line":607},16,[609,614],{"type":65,"tag":100,"props":610,"children":611},{"style":196},[612],{"type":70,"value":613},"  )",{"type":65,"tag":100,"props":615,"children":616},{"style":124},[617],{"type":70,"value":143},{"type":65,"tag":100,"props":619,"children":621},{"class":102,"line":620},17,[622,626,630],{"type":65,"tag":100,"props":623,"children":624},{"style":124},[625],{"type":70,"value":260},{"type":65,"tag":100,"props":627,"children":628},{"style":113},[629],{"type":70,"value":265},{"type":65,"tag":100,"props":631,"children":632},{"style":124},[633],{"type":70,"value":143},{"type":65,"tag":635,"props":636,"children":637},"read-more",{},[638],{"type":65,"tag":66,"props":639,"children":640},{},[641,643,654,656,666],{"type":70,"value":642},"See ",{"type":65,"tag":644,"props":645,"children":647},"a",{"href":646},"./test/fixture/deno.ts",[648],{"type":65,"tag":73,"props":649,"children":651},{"className":650},[],[652],{"type":70,"value":653},"test/fixture/deno.ts",{"type":70,"value":655}," for demo and ",{"type":65,"tag":644,"props":657,"children":659},{"href":658},"./src/adapters/deno.ts",[660],{"type":65,"tag":73,"props":661,"children":663},{"className":662},[],[664],{"type":70,"value":665},"src/adapters/deno.ts",{"type":70,"value":667}," for implementation.",{"type":65,"tag":669,"props":670,"children":671},"style",{},[672],{"type":70,"value":673},"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":59,"searchDepth":146,"depth":146,"links":675},[],"markdown","content:2.adapters:deno.md","content","2.adapters/deno.md","2.adapters/deno","md",[683,685],{"_path":42,"title":41,"description":684},"Integrate crossws with Cloudflare Workers.",{"_path":50,"title":49,"description":686},"Integrate crossws with Node.js using ws or uWebSockets.js",1747776031386]