import { connect } from 'cloudflare:sockets'; const passwd = "iamissupperman" export default{ async fetch(request, env){ let params = new URL(request.url).searchParams; const token=params.get("token"); const upgradeHeader=request.headers.get("Upgrade"); if(passwd!=token) return new Response(null, {status:401}); if(upgradeHeader!=="websocket"){ return new Response("

可以连接

", { status:200, headers:{ "Content-Type":"text/html" } }); } const [hostname, port] = params.get("proxy").split(":"); const socket=connect({hostname, port:parseInt(port)}); const [client, server]=Object.values(new WebSocketPair()); try{ server.accept(); new ReadableStream({ start(controller){ server.onmessage = ({data})=>controller.enqueue(data); server.onerror = e=>controller.error(e); server.onclose = e=>controller.close(e); }, cancel(reason){server.close();} }).pipeTo(socket.writable); socket.readable.pipeTo(new WritableStream({ start(controller){server.onerror=e=>controller.error(e);}, write(chunk){server.send(chunk);} })); } catch(e) { server.close(); return new Response(e, {status:400}); } return new Response(null, {status:101, webSocket:client}); } }