🔧 Add timeout handling to IP fetch request in demo.ts

This commit is contained in:
2026-04-22 22:33:10 +08:00
parent e0158d1193
commit c56d7bdfa4

19
demo.ts
View File

@@ -33,8 +33,21 @@ export const get_my_ip = tool({
description: "Get my IP",
args: {},
async execute(args): Promise<ToolResult> {
const ipResp = await fetch("https://hatter.ink/ip/ip.jsonp");
const ipResponse = await ipResp.json() as IpResponse;
return ipResponse.ip;
const timeoutMs = 10_000;
const abortController = new AbortController();
const timeoutHandler = setTimeout(() => {
abortController.abort(
`Fetch timeout: ${timeoutMs} ms`,
);
}, timeoutMs);
try {
const ipResp = await fetch("https://hatter.ink/ip/ip.jsonp", {
signal: abortController.signal,
});
const ipResponse = await ipResp.json() as IpResponse;
return ipResponse.ip;
} finally {
clearTimeout(timeoutHandler);
}
},
});