Skip to content

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");
});