@@ -43,10 +43,12 @@ import diagnostics_channel from 'node:diagnostics_channel';
43
43
// Get a reusable channel object
44
44
const channel = diagnostics_channel .channel (' my-channel' );
45
45
46
- // Subscribe to the channel
47
- channel .subscribe ((message , name ) => {
46
+ function onMessage (message , name ) {
48
47
// Received data
49
- });
48
+ }
49
+
50
+ // Subscribe to the channel
51
+ diagnostics_channel .subscribe (' my-channel' , onMessage);
50
52
51
53
// Check if the channel has an active subscriber
52
54
if (channel .hasSubscribers ) {
@@ -55,6 +57,9 @@ if (channel.hasSubscribers) {
55
57
some: ' data'
56
58
});
57
59
}
60
+
61
+ // Unsubscribe from the channel
62
+ diagnostics_channel .unsubscribe (' my-channel' , onMessage);
58
63
```
59
64
60
65
``` cjs
@@ -63,10 +68,12 @@ const diagnostics_channel = require('node:diagnostics_channel');
63
68
// Get a reusable channel object
64
69
const channel = diagnostics_channel .channel (' my-channel' );
65
70
66
- // Subscribe to the channel
67
- channel .subscribe ((message , name ) => {
71
+ function onMessage (message , name ) {
68
72
// Received data
69
- });
73
+ }
74
+
75
+ // Subscribe to the channel
76
+ diagnostics_channel .subscribe (' my-channel' , onMessage);
70
77
71
78
// Check if the channel has an active subscriber
72
79
if (channel .hasSubscribers ) {
@@ -75,6 +82,9 @@ if (channel.hasSubscribers) {
75
82
some: ' data'
76
83
});
77
84
}
85
+
86
+ // Unsubscribe from the channel
87
+ diagnostics_channel .unsubscribe (' my-channel' , onMessage);
78
88
```
79
89
80
90
#### ` diagnostics_channel.hasSubscribers(name) `
@@ -121,7 +131,7 @@ added:
121
131
* ` name ` {string|symbol} The channel name
122
132
* Returns: {Channel} The named channel object
123
133
124
- This is the primary entry-point for anyone wanting to interact with a named
134
+ This is the primary entry-point for anyone wanting to publish to a named
125
135
channel. It produces a channel object which is optimized to reduce overhead at
126
136
publish time as much as possible.
127
137
@@ -137,6 +147,76 @@ const diagnostics_channel = require('node:diagnostics_channel');
137
147
const channel = diagnostics_channel .channel (' my-channel' );
138
148
```
139
149
150
+ #### ` diagnostics_channel.subscribe(name, onMessage) `
151
+
152
+ <!-- YAML
153
+ added:
154
+ - REPLACEME
155
+ -->
156
+
157
+ * ` name ` {string|symbol} The channel name
158
+ * ` onMessage ` {Function} The handler to receive channel messages
159
+ * ` message ` {any} The message data
160
+ * ` name ` {string|symbol} The name of the channel
161
+
162
+ Register a message handler to subscribe to this channel. This message handler
163
+ will be run synchronously whenever a message is published to the channel. Any
164
+ errors thrown in the message handler will trigger an [ ` 'uncaughtException' ` ] [ ] .
165
+
166
+ ``` mjs
167
+ import diagnostics_channel from ' diagnostics_channel' ;
168
+
169
+ diagnostics_channel .subscribe (' my-channel' , (message , name ) => {
170
+ // Received data
171
+ });
172
+ ```
173
+
174
+ ``` cjs
175
+ const diagnostics_channel = require (' diagnostics_channel' );
176
+
177
+ diagnostics_channel .subscribe (' my-channel' , (message , name ) => {
178
+ // Received data
179
+ });
180
+ ```
181
+
182
+ #### ` diagnostics_channel.unsubscribe(name, onMessage) `
183
+
184
+ <!-- YAML
185
+ added:
186
+ - REPLACEME
187
+ -->
188
+
189
+ * ` name ` {string|symbol} The channel name
190
+ * ` onMessage ` {Function} The previous subscribed handler to remove
191
+ * Returns: {boolean} ` true ` if the handler was found, ` false ` otherwise.
192
+
193
+ Remove a message handler previously registered to this channel with
194
+ [ ` diagnostics_channel.subscribe(name, onMessage) ` ] [ ] .
195
+
196
+ ``` mjs
197
+ import diagnostics_channel from ' diagnostics_channel' ;
198
+
199
+ function onMessage (message , name ) {
200
+ // Received data
201
+ }
202
+
203
+ diagnostics_channel .subscribe (' my-channel' , onMessage);
204
+
205
+ diagnostics_channel .unsubscribe (' my-channel' , onMessage);
206
+ ```
207
+
208
+ ``` cjs
209
+ const diagnostics_channel = require (' diagnostics_channel' );
210
+
211
+ function onMessage (message , name ) {
212
+ // Received data
213
+ }
214
+
215
+ diagnostics_channel .subscribe (' my-channel' , onMessage);
216
+
217
+ diagnostics_channel .unsubscribe (' my-channel' , onMessage);
218
+ ```
219
+
140
220
### Class: ` Channel `
141
221
142
222
<!-- YAML
@@ -341,4 +421,5 @@ Emitted when server sends a response.
341
421
342
422
[ `'uncaughtException'` ] : process.md#event-uncaughtexception
343
423
[ `channel.subscribe(onMessage)` ] : #channelsubscribeonmessage
424
+ [ `diagnostics_channel.subscribe(name, onMessage)` ] : #diagnostics_channelunsubscribename_onmessage
344
425
[ `diagnostics_channel.channel(name)` ] : #diagnostics_channelchannelname
0 commit comments