Skip to content
Cloudflare Docs

Changelog

New updates and improvements at Cloudflare. Subscribe to RSS

hero image

Support for Node.js DNS, Net, and Timer APIs in Workers

Jan 28, 2025, 01:00 PM

When using a Worker with the nodejs_compat compatibility flag enabled, you can now use the following Node.js APIs:

node:net

You can use node:net to create a direct connection to servers via a TCP sockets with net.Socket.

index.js
import net from "node:net";
const exampleIP = "127.0.0.1";
export default {
async fetch(req) {
const socket = new net.Socket();
socket.connect(4000, exampleIP, function () {
console.log("Connected");
});
socket.write("Hello, Server!");
socket.end();
return new Response("Wrote to server", { status: 200 });
},
};

Additionally, you can now use other APIs incliding net.BlockList and net.SocketAddress.

Note that net.Server is not supported.

node:dns

You can use node:dns for name resolution via DNS over HTTPS using Cloudflare DNS at 1.1.1.1.

index.js
import dns from "node:dns";
let responese = await dns.promises.resolve4("cloudflare.com", "NS");

All node:dns functions are available, except lookup, lookupService, and resolve which throw "Not implemented" errors when called.

node:timers

You can use node:timers to schedule functions to be called at some future period of time.

This includes setTimeout for calling a function after a delay, setInterval for calling a function repeatedly, and setImmediate for calling a function in the next iteration of the event loop.

index.js
import timers from "node:timers";
console.log("first");
timers.setTimeout(() => {
console.log("last");
}, 10);
timers.setTimeout(() => {
console.log("next");
});