有没有一种简单的方法可以使用 Deno.serveHttp 获取 IP 客户端?

Is there an easy way to get the IP client using Deno.serveHttp?

我在官方仓库上发现了这个问题。但不是直接的方式,而是更多来自 oakserver 的实现。 https://github.com/denoland/deno/discussions/9314

您可以将连接地址转换为 Deno.NetAddr 并访问 hostname(如果需要,还可以访问 port):

const server = Deno.listen({ port: 8080 });

for await (const conn of server) {
  (async () => {
    const httpConn = Deno.serveHttp(conn);
    const { hostname } = conn.remoteAddr as Deno.NetAddr;
    for await (const requestEvent of httpConn) {
      requestEvent.respondWith(new Response(hostname));
    }
  })();
}