[{"data":1,"prerenderedAt":397},["ShallowReactive",2],{"navigation":3,"-adapters-bun":72,"-adapters-bun-surround":394},[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":44,"body":74,"description":388,"extension":389,"meta":390,"navigation":391,"path":45,"seo":392,"stem":46,"__hash__":393},"content/2.adapters/bun.md",{"type":75,"value":76,"toc":386,"icon":47},"minimark",[77,98,117,360,382],[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 Bun!",[81,99,100,101,104,105,108,109,116],{},"To manually integrate crossws with your Bun server, you need to handle upgrade with ",[85,102,103],{},"handleUpgrade"," util and also pass the ",[85,106,107],{},"websocket"," object returned from the adapter to server options. crossws leverages native bun ",[110,111,115],"a",{"href":112,"rel":113},"https://bun.sh/docs/api/websockets",[114],"nofollow","WebSocket API",".",[118,119,124],"pre",{"className":120,"code":121,"language":122,"meta":123,"style":123},"language-ts shiki shiki-themes github-light github-dark github-dark","import crossws from \"crossws/adapters/bun\";\n\nconst ws = crossws({\n  hooks: {\n    message: console.log,\n  },\n});\n\nBun.serve({\n  port: 3000,\n  websocket: ws.websocket,\n  fetch(request, server) {\n    if (request.headers.get(\"upgrade\") === \"websocket\") {\n      return ws.handleUpgrade(request, server);\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});\n","ts","",[85,125,126,149,156,176,182,188,194,200,205,215,227,233,255,283,297,303,318,326,344,350,355],{"__ignoreMap":123},[127,128,131,135,139,142,146],"span",{"class":129,"line":130},"line",1,[127,132,134],{"class":133},"so5gQ","import",[127,136,138],{"class":137},"slsVL"," crossws ",[127,140,141],{"class":133},"from",[127,143,145],{"class":144},"sfrk1"," \"crossws/adapters/bun\"",[127,147,148],{"class":137},";\n",[127,150,152],{"class":129,"line":151},2,[127,153,155],{"emptyLinePlaceholder":154},true,"\n",[127,157,159,162,166,169,173],{"class":129,"line":158},3,[127,160,161],{"class":133},"const",[127,163,165],{"class":164},"suiK_"," ws",[127,167,168],{"class":133}," =",[127,170,172],{"class":171},"shcOC"," crossws",[127,174,175],{"class":137},"({\n",[127,177,179],{"class":129,"line":178},4,[127,180,181],{"class":137},"  hooks: {\n",[127,183,185],{"class":129,"line":184},5,[127,186,187],{"class":137},"    message: console.log,\n",[127,189,191],{"class":129,"line":190},6,[127,192,193],{"class":137},"  },\n",[127,195,197],{"class":129,"line":196},7,[127,198,199],{"class":137},"});\n",[127,201,203],{"class":129,"line":202},8,[127,204,155],{"emptyLinePlaceholder":154},[127,206,208,211,213],{"class":129,"line":207},9,[127,209,210],{"class":137},"Bun.",[127,212,87],{"class":171},[127,214,175],{"class":137},[127,216,218,221,224],{"class":129,"line":217},10,[127,219,220],{"class":137},"  port: ",[127,222,223],{"class":164},"3000",[127,225,226],{"class":137},",\n",[127,228,230],{"class":129,"line":229},11,[127,231,232],{"class":137},"  websocket: ws.websocket,\n",[127,234,236,239,242,246,249,252],{"class":129,"line":235},12,[127,237,238],{"class":171},"  fetch",[127,240,241],{"class":137},"(",[127,243,245],{"class":244},"sQHwn","request",[127,247,248],{"class":137},", ",[127,250,251],{"class":244},"server",[127,253,254],{"class":137},") {\n",[127,256,258,261,264,267,269,272,275,278,281],{"class":129,"line":257},13,[127,259,260],{"class":133},"    if",[127,262,263],{"class":137}," (request.headers.",[127,265,266],{"class":171},"get",[127,268,241],{"class":137},[127,270,271],{"class":144},"\"upgrade\"",[127,273,274],{"class":137},") ",[127,276,277],{"class":133},"===",[127,279,280],{"class":144}," \"websocket\"",[127,282,254],{"class":137},[127,284,286,289,292,294],{"class":129,"line":285},14,[127,287,288],{"class":133},"      return",[127,290,291],{"class":137}," ws.",[127,293,103],{"class":171},[127,295,296],{"class":137},"(request, server);\n",[127,298,300],{"class":129,"line":299},15,[127,301,302],{"class":137},"    }\n",[127,304,306,309,312,315],{"class":129,"line":305},16,[127,307,308],{"class":133},"    return",[127,310,311],{"class":133}," new",[127,313,314],{"class":171}," Response",[127,316,317],{"class":137},"(\n",[127,319,321,324],{"class":129,"line":320},17,[127,322,323],{"class":144},"      `\u003Cscript>new WebSocket(\"ws://localhost:3000\").addEventListener('open', (e) => e.target.send(\"Hello from client!\"));\u003C/script>`",[127,325,226],{"class":137},[127,327,329,332,335,338,341],{"class":129,"line":328},18,[127,330,331],{"class":137},"      { headers: { ",[127,333,334],{"class":144},"\"content-type\"",[127,336,337],{"class":137},": ",[127,339,340],{"class":144},"\"text/html\"",[127,342,343],{"class":137}," } },\n",[127,345,347],{"class":129,"line":346},19,[127,348,349],{"class":137},"    );\n",[127,351,353],{"class":129,"line":352},20,[127,354,193],{"class":137},[127,356,358],{"class":129,"line":357},21,[127,359,199],{"class":137},[361,362,363],"read-more",{},[81,364,365,366,373,374,381],{},"See ",[110,367,370],{"href":368,"rel":369},"https://github.com/h3js/crossws/blob/main/test/fixture/bun.ts",[114],[85,371,372],{},"test/fixture/bun.ts"," for demo and ",[110,375,378],{"href":376,"rel":377},"https://github.com/h3js/crossws/blob/main/src/adapters/bun.ts",[114],[85,379,380],{},"src/adapters/bun.ts"," for implementation.",[383,384,385],"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":123,"searchDepth":151,"depth":151,"links":387},[],"Manually integrate crossws with Bun.","md",{"icon":47},{"icon":47},{"title":44,"description":388},"rjlG8BE8jnXTw8iq2pC90IyoRJ9ZuM2cNWnI5gn-nzY",[395,396],{"title":37,"path":38,"stem":39,"description":123,"icon":42,"children":-1},{"title":49,"path":50,"stem":51,"description":123,"children":-1},1771506027188]