worker: add ref/unref to web workers · nodejs/node@56144ea · GitHub
Skip to content

Commit 56144ea

Browse files
avivkelleraduh95
authored andcommitted
worker: add ref/unref to web workers
Signed-off-by: avivkeller <me@aviv.sh> PR-URL: #65507 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
1 parent 431c2bf commit 56144ea

4 files changed

Lines changed: 52 additions & 0 deletions

File tree

‎doc/api/globals.md‎

Lines changed: 5 additions & 0 deletions

‎lib/internal/webworker.js‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ const {
9999

100100
const kCurrentlyReceivingPorts =
101101
SymbolFor('nodejs.internal.kCurrentlyReceivingPorts');
102+
const kRef = SymbolFor('nodejs.ref');
103+
const kUnref = SymbolFor('nodejs.unref');
102104

103105
const kCreate = Symbol('kCreate');
104106
const kInsidePort = Symbol('kInsidePort');
@@ -865,6 +867,17 @@ class Worker extends EventTarget {
865867
// arguments, and returned the same return value."
866868
this[kWorker]?.postMessage(message, transfer);
867869
}
870+
871+
// The following properties are non-standard, Node.js extensions
872+
[kRef]() {
873+
validateThisInternalField(this, kWorker, 'Worker');
874+
this[kWorker]?.ref();
875+
}
876+
877+
[kUnref]() {
878+
validateThisInternalField(this, kWorker, 'Worker');
879+
this[kWorker]?.unref();
880+
}
868881
}
869882

870883
ObjectDefineProperties(Worker.prototype, {

‎test/fixtures/web-worker/echo.js‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
addEventListener('message', (event) => {
4+
postMessage(event.data);
5+
});
Lines changed: 29 additions & 0 deletions

0 commit comments

Comments
 (0)