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

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

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 including net.BlockList and net.SocketAddress.

Note that net.Server is not supported.

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

import dns from "node:dns";

let response = 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.

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.

import timers from "node:timers";

console.log("first");

timers.setTimeout(() => {

console.log("last");

}, 10);

timers.setTimeout(() => {

console.log("next");

});