File tree 3 files changed +32
-1
lines changed
3 files changed +32
-1
lines changed Original file line number Diff line number Diff line change 2
2
3
3
const debug = require ( 'util' ) . debuglog ( 'egg:util:messenger:ipc' ) ;
4
4
const is = require ( 'is-type-of' ) ;
5
+ const workerThreads = require ( 'worker_threads' ) ;
5
6
const sendmessage = require ( 'sendmessage' ) ;
6
7
const EventEmitter = require ( 'events' ) ;
7
8
@@ -22,6 +23,9 @@ class Messenger extends EventEmitter {
22
23
} ) ;
23
24
this . _onMessage = this . _onMessage . bind ( this ) ;
24
25
process . on ( 'message' , this . _onMessage ) ;
26
+ if ( ! workerThreads . isMainThread ) {
27
+ workerThreads . parentPort . on ( 'message' , this . _onMessage ) ;
28
+ }
25
29
}
26
30
27
31
/**
Original file line number Diff line number Diff line change 51
51
"koa-override" : " ^3.0.0" ,
52
52
"ms" : " ^2.1.3" ,
53
53
"on-finished" : " ^2.4.1" ,
54
- "sendmessage" : " ^1.1 .0" ,
54
+ "sendmessage" : " ^2.0 .0" ,
55
55
"urllib" : " ^2.33.0" ,
56
56
"urllib-next" : " ^3.9.0" ,
57
57
"utility" : " ^1.17.0" ,
Original file line number Diff line number Diff line change @@ -162,4 +162,31 @@ describe('test/lib/core/messenger/ipc.test.js', () => {
162
162
}
163
163
} ) ;
164
164
} ) ;
165
+
166
+ describe ( 'worker_threads mode' , ( ) => {
167
+ let app ;
168
+ before ( ( ) => {
169
+ mm . env ( 'default' ) ;
170
+ app = utils . cluster ( 'apps/messenger-app-agent' , { workers : 1 , startMode : 'worker_threads' } ) ;
171
+ app . coverage ( false ) ;
172
+ return app . ready ( ) ;
173
+ } ) ;
174
+ after ( ( ) => app . close ( ) ) ;
175
+
176
+ it ( 'app should accept agent message' , done => {
177
+ setTimeout ( ( ) => {
178
+ assert ( count ( app . stdout , 'agent2app' ) === 1 ) ;
179
+ assert ( count ( app . stdout , 'app2app' ) === 1 ) ;
180
+ assert ( count ( app . stdout , 'agent2agent' ) === 1 ) ;
181
+ assert ( count ( app . stdout , 'app2agent' ) === 1 ) ;
182
+ done ( ) ;
183
+ } , 500 ) ;
184
+
185
+ function count ( data , key ) {
186
+ return data . split ( '\n' ) . filter ( line => {
187
+ return line . indexOf ( key ) >= 0 ;
188
+ } ) . length ;
189
+ }
190
+ } ) ;
191
+ } ) ;
165
192
} ) ;
You can’t perform that action at this time.
0 commit comments