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