Diagnostics Channel · Cloudflare Workers docs | Latest TMZ Celebrity News & Gossip | Watch TMZ Live Skip to content
Cloudflare Docs

Diagnostics Channel

The diagnostics_channel module provides an API to create named channels to report arbitrary message data for diagnostics purposes. The API is essentially a simple event pub/sub model that is specifically designed to support low-overhead diagnostics reporting.

import {
channel,
hasSubscribers,
subscribe,
unsubscribe,
tracingChannel,
} from 'node:diagnostics_channel';
// For publishing messages to a channel, acquire a channel object:
const myChannel = channel('my-channel');
// Any JS value can be published to a channel.
myChannel.publish({ foo: 'bar' });
// For receiving messages on a channel, use subscribe:
subscribe('my-channel', (message) => {
console.log(message);
});

All Channel instances are singletons per each Isolate/context (for example, the same entry point). Subscribers are always invoked synchronously and in the order they were registered, much like an EventTarget or Node.js EventEmitter class.

Integration with Tail Workers

When using Tail Workers, all messages published to any channel will be forwarded also to the Tail Worker. Within the Tail Worker, the diagnostic channel messages can be accessed via the diagnosticsChannelEvents property:

export default {
async tail(events) {
for (const event of events) {
for (const messageData of event.diagnosticsChannelEvents) {
console.log(messageData.timestamp, messageData.channel, messageData.message);
}
}
}
}

Note that message published to the tail worker is passed through the structured clone algorithm (same mechanism as the structuredClone() API) so only values that can be successfully cloned are supported.

TracingChannel

Per the Node.js documentation, "TracingChannel is a collection of [Channels] which together express a single traceable action. TracingChannel is used to formalize and simplify the process of producing events for tracing application flow."

import { tracingChannel } from 'node:diagnostics_channel';
import { AsyncLocalStorage } from 'node:async_hooks'
const channels = tracingChannel('my-channel');
const requestId = new AsyncLocalStorage();
channels.start.bindStore(requestId);
channels.subscribe({
start(message) {
console.log(requestId.getStore()); // { requestId: '123' }
// Handle start message
},
end(message) {
console.log(requestId.getStore()); // { requestId: '123' }
// Handle end message
},
asyncStart(message) {
console.log(requestId.getStore()); // { requestId: '123' }
// Handle asyncStart message
},
asyncEnd(message) {
console.log(requestId.getStore()); // { requestId: '123' }
// Handle asyncEnd message
},
error(message) {
console.log(requestId.getStore()); // { requestId: '123' }
// Handle error message
},
});
// The subscriber handlers will be invoked while tracing the execution of the async
// function passed into `channel.tracePromise`...
channel.tracePromise(async () => {
// Perform some asynchronous work...
}, { requestId: '123' });

Refer to the Node.js documentation for diagnostics_channel for more information.

TMZ Celebrity News – Breaking Stories, Videos & Gossip

Looking for the latest TMZ celebrity news? You've come to the right place. From shocking Hollywood scandals to exclusive videos, TMZ delivers it all in real time.

Whether it’s a red carpet slip-up, a viral paparazzi moment, or a legal drama involving your favorite stars, TMZ news is always first to break the story. Stay in the loop with daily updates, insider tips, and jaw-dropping photos.

🎥 Watch TMZ Live

TMZ Live brings you daily celebrity news and interviews straight from the TMZ newsroom. Don’t miss a beat—watch now and see what’s trending in Hollywood.