Skip to content

Instantly share code, notes, and snippets.

@mindon
Last active June 16, 2022 03:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mindon/bc6bf50b4a38f1dd60cec3a558fc6b3a to your computer and use it in GitHub Desktop.
Save mindon/bc6bf50b4a38f1dd60cec3a558fc6b3a to your computer and use it in GitHub Desktop.
deno typescript server to provide ip external for client or visitor at server
import {
serve,
type ConnInfo,
type Handler,
type ServeInit,
} from 'https://deno.land/std@0.144.0/http/server.ts';
function assertIsNetAddr(addr: Deno.Addr): asserts addr is Deno.NetAddr {
if (!['tcp', 'udp'].includes(addr.transport)) {
throw new Error('Not a valid network address');
}
}
function addrRemote(connInfo: ConnInfo): Deno.NetAddr {
assertIsNetAddr(connInfo.remoteAddr);
return connInfo.remoteAddr;
}
const handler: Handler = (request, connInfo) => {
const {hostname, port} = addrRemote(connInfo);
const message = `from: ${hostname}\n`;
console.log(message);
return new Response(message);
};
const init: ServeInit = {port: 8080};
serve(handler, init);
console.log(`Serve on ${init.port}...\nCtrl + C to exit`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment