eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.04 kB
JavaScript
import{createServer}from"node:http";function createWebSocketUpgradeServer(){let t=createServer();return{route:createWebSocketUpgradeRoute(t),server:t}}function createWebSocketUpgradeRoute(e){return()=>({upgrade(t){return dispatchNodeUpgrade(e,t)}})}async function dispatchNodeUpgrade(e,t){let n=resolveNodeUpgrade(t);if(n===null)return Response.json({error:`This WebSocket route cannot expose a Node upgrade event on the current host.`,ok:!1},{status:501});let r=e.listeners(`upgrade`);if(r.length===0)return Response.json({error:`No upgrade listeners are registered on this WebSocket server bridge.`,ok:!1},{status:500});for(let t of r)await Promise.resolve(t.call(e,n.request,n.socket,n.head));return{handled:!0}}function resolveNodeUpgrade(e){let t=e.runtime?.node,n=t?.req,r=t?.upgrade?.socket,i=t?.upgrade?.head;if(n===void 0||r===void 0||i===void 0)return null;if(typeof n.url!=`string`||n.url.length===0){let t=new URL(e.url);n.url=`${t.pathname}${t.search}`}return{head:i,request:n,socket:r}}export{createWebSocketUpgradeServer};