[{"data":1,"prerenderedAt":373},["ShallowReactive",2],{"navigation":3,"-adapters-deno":72,"-adapters-deno-surround":368},[4,36],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","/guide","1.guide/1.index",[9,11,16,21,26,31],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Hooks","/guide/hooks","1.guide/2.hooks","material-symbols-light:data-object",{"title":17,"path":18,"stem":19,"icon":20},"Peer","/guide/peer","1.guide/3.peer","mynaui:api",{"title":22,"path":23,"stem":24,"icon":25},"Message","/guide/message","1.guide/4.message","solar:letter-line-duotone",{"title":27,"path":28,"stem":29,"icon":30},"Pub / Sub","/guide/pubsub","1.guide/5.pubsub","simple-icons:googlepubsub",{"title":32,"path":33,"stem":34,"icon":35},"Resolver API","/guide/resolver","1.guide/6.resolver","tabler:route",{"title":37,"path":38,"stem":39,"children":40,"icon":42},"Adapters","/adapters","2.adapters/1.index",[41,43,48,52,57,62,67],{"title":37,"path":38,"stem":39,"icon":42},"emojione-monotone:electric-plug",{"title":44,"path":45,"stem":46,"icon":47},"Bun","/adapters/bun","2.adapters/bun","simple-icons:bun",{"title":49,"path":50,"stem":51},"Bunny","/adapters/bunny","2.adapters/bunny",{"title":53,"path":54,"stem":55,"icon":56},"Cloudflare","/adapters/cloudflare","2.adapters/cloudflare","devicon-plain:cloudflareworkers",{"title":58,"path":59,"stem":60,"icon":61},"Deno","/adapters/deno","2.adapters/deno","teenyicons:deno-solid",{"title":63,"path":64,"stem":65,"icon":66},"Node.js","/adapters/node","2.adapters/node","akar-icons:node-fill",{"title":68,"path":69,"stem":70,"icon":71},"SSE","/adapters/sse","2.adapters/sse","clarity:two-way-arrows-line",{"id":73,"title":58,"body":74,"description":362,"extension":363,"meta":364,"navigation":365,"path":59,"seo":366,"stem":60,"__hash__":367},"content/2.adapters/deno.md",{"type":75,"value":76,"toc":360,"icon":61},"minimark",[77,98,109,335,356],[78,79,80],"tip",{},[81,82,83,84,88,89,92,93,97],"p",{},"\nYou can use ",[85,86,87],"code",{},"serve"," function from ",[85,90,91],{},"crossws/server"," to ",[94,95,96],"strong",{},"automatically"," integrate crossws with Deno!",[81,99,100,101,104,105,108],{},"To manually integrate crossws with your Deno server, you need to check for the ",[85,102,103],{},"upgrade"," header and then call ",[85,106,107],{},"handleUpgrade"," method from the adapter passing the incoming request object. The returned value is the server upgrade response.",[110,111,116],"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-ts shiki shiki-themes github-light github-dark github-dark","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","",[85,117,118,141,148,168,174,180,186,192,197,233,262,276,282,297,306,324,330],{"__ignoreMap":115},[119,120,123,127,131,134,138],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"so5gQ","import",[119,128,130],{"class":129},"slsVL"," crossws ",[119,132,133],{"class":125},"from",[119,135,137],{"class":136},"sfrk1"," \"crossws/adapters/deno\"",[119,139,140],{"class":129},";\n",[119,142,144],{"class":121,"line":143},2,[119,145,147],{"emptyLinePlaceholder":146},true,"\n",[119,149,151,154,158,161,165],{"class":121,"line":150},3,[119,152,153],{"class":125},"const",[119,155,157],{"class":156},"suiK_"," ws",[119,159,160],{"class":125}," =",[119,162,164],{"class":163},"shcOC"," crossws",[119,166,167],{"class":129},"({\n",[119,169,171],{"class":121,"line":170},4,[119,172,173],{"class":129},"  hooks: {\n",[119,175,177],{"class":121,"line":176},5,[119,178,179],{"class":129},"    message: console.log,\n",[119,181,183],{"class":121,"line":182},6,[119,184,185],{"class":129},"  },\n",[119,187,189],{"class":121,"line":188},7,[119,190,191],{"class":129},"});\n",[119,193,195],{"class":121,"line":194},8,[119,196,147],{"emptyLinePlaceholder":146},[119,198,200,203,205,208,211,214,218,221,224,227,230],{"class":121,"line":199},9,[119,201,202],{"class":129},"Deno.",[119,204,87],{"class":163},[119,206,207],{"class":129},"({ port: ",[119,209,210],{"class":156},"3000",[119,212,213],{"class":129}," }, (",[119,215,217],{"class":216},"sQHwn","request",[119,219,220],{"class":129},", ",[119,222,223],{"class":216},"info",[119,225,226],{"class":129},") ",[119,228,229],{"class":125},"=>",[119,231,232],{"class":129}," {\n",[119,234,236,239,242,245,248,251,253,256,259],{"class":121,"line":235},10,[119,237,238],{"class":125},"  if",[119,240,241],{"class":129}," (request.headers.",[119,243,244],{"class":163},"get",[119,246,247],{"class":129},"(",[119,249,250],{"class":136},"\"upgrade\"",[119,252,226],{"class":129},[119,254,255],{"class":125},"===",[119,257,258],{"class":136}," \"websocket\"",[119,260,261],{"class":129},") {\n",[119,263,265,268,271,273],{"class":121,"line":264},11,[119,266,267],{"class":125},"    return",[119,269,270],{"class":129}," ws.",[119,272,107],{"class":163},[119,274,275],{"class":129},"(request, info);\n",[119,277,279],{"class":121,"line":278},12,[119,280,281],{"class":129},"  }\n",[119,283,285,288,291,294],{"class":121,"line":284},13,[119,286,287],{"class":125},"  return",[119,289,290],{"class":125}," new",[119,292,293],{"class":163}," Response",[119,295,296],{"class":129},"(\n",[119,298,300,303],{"class":121,"line":299},14,[119,301,302],{"class":136},"    `\u003Cscript>new WebSocket(\"ws://localhost:3000\").addEventListener(\"open\", (e) => e.target.send(\"Hello from client!\"));\u003C/script>`",[119,304,305],{"class":129},",\n",[119,307,309,312,315,318,321],{"class":121,"line":308},15,[119,310,311],{"class":129},"    { headers: { ",[119,313,314],{"class":136},"\"content-type\"",[119,316,317],{"class":129},": ",[119,319,320],{"class":136},"\"text/html\"",[119,322,323],{"class":129}," } },\n",[119,325,327],{"class":121,"line":326},16,[119,328,329],{"class":129},"  );\n",[119,331,333],{"class":121,"line":332},17,[119,334,191],{"class":129},[336,337,338],"read-more",{},[81,339,340,341,348,349,355],{},"See ",[342,343,345],"a",{"href":344},"./test/fixture/deno.ts",[85,346,347],{},"test/fixture/deno.ts"," for demo and ",[342,350,352],{"href":351},"./src/adapters/deno.ts",[85,353,354],{},"src/adapters/deno.ts"," for implementation.",[357,358,359],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}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 .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}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":115,"searchDepth":143,"depth":143,"links":361},[],"Manually integrate crossws with Deno.","md",{"icon":61},{"icon":61},{"title":58,"description":362},"ROmtNyLRVHjsNxCsVmALIQkRC3BzX6RKr8buZdluasU",[369,371],{"title":53,"path":54,"stem":55,"description":370,"icon":56,"children":-1},"Integrate crossws with Cloudflare Workers and Durable Objects.",{"title":63,"path":64,"stem":65,"description":372,"icon":66,"children":-1},"Integrate crossws with Node.js (manually) or uWebSockets.js",1771506027189]