MCPcopy Create free account
hub / github.com/awslabs/llrt / createServer

Function createServer

example/register-hooks/src/http.js:58–142  ·  view source on GitHub ↗
(listener)

Source from the content-addressed store, hash-verified

56 * Throughput: 12.59MB/s
57 */
58export function createServer(listener) {
59 return createTcpServer((socket) => {
60 socket.on("error", (error) => {
61 console.error("Socket error:", error);
62 socket.end();
63 });
64
65 socket.on("data", async (data) => {
66 try {
67 const requestString = data.toString();
68 const [headerPart, bodyPart = ""] = requestString.split("\r\n\r\n");
69 const lines = headerPart.split("\r\n");
70 const [method, path, protocol] = lines[0].split(" ");
71
72 const headers = {};
73 lines.slice(1).forEach((line) => {
74 if (line) {
75 const [key, ...valueParts] = line.split(": ");
76 headers[key.toLowerCase()] = valueParts.join(": ");
77 }
78 });
79
80 // --- Simplified IncomingMessage object ---
81 const req = {
82 method,
83 url: path,
84 headers,
85 httpVersion: protocol.replace("HTTP/", ""),
86 socket,
87 body: bodyPart,
88 };
89
90 // --- Simplified ServerResponse object ---
91 let headersSent = false;
92 const resHeaders = {};
93 const res = {
94 statusCode: 200,
95 statusMessage: "OK",
96 setHeader(name, value) {
97 resHeaders[name] = value;
98 },
99 getHeader(name) {
100 return resHeaders[name];
101 },
102 writeHead(statusCode, statusMessageOrHeaders, maybeHeaders) {
103 if (headersSent) return;
104 if (typeof statusMessageOrHeaders === "string") {
105 this.statusCode = statusCode;
106 this.statusMessage = statusMessageOrHeaders;
107 Object.assign(resHeaders, maybeHeaders || {});
108 } else {
109 this.statusCode = statusCode;
110 this.statusMessage = "OK";
111 Object.assign(resHeaders, statusMessageOrHeaders || {});
112 }
113 const headerLines = Object.entries(resHeaders)
114 .map(([k, v]) => `${k}: ${v}`)
115 .join("\r\n");

Callers 2

simple-server.jsFile · 0.85

Calls 7

onMethod · 0.80
joinMethod · 0.80
errorMethod · 0.65
endMethod · 0.65
toStringMethod · 0.65
writeMethod · 0.65
sliceMethod · 0.45

Tested by

no test coverage detected