1
- const { getPipePath , encodeIpcData, parseIpcData } = require ( './env' )
1
+ const { getIpcPath , encodeIpcData, decodeIpcData } = require ( './env' )
2
2
const net = require ( 'net' )
3
3
4
4
const DEFAULT_ID = process . env . VUE_CLI_IPC || 'vue-cli'
@@ -19,15 +19,11 @@ exports.IpcMessenger = class IpcMessenger {
19
19
this . id = options . networkId
20
20
this . retry = 1500
21
21
this . ipcTimer = null
22
- this . reserveData = {
23
- contentLength : - 1 ,
24
- rawData : ''
25
- }
26
22
this . socket = null
27
23
28
24
this . connected = false
29
25
this . connecting = false
30
- this . disconnected = false
26
+ this . explicitlyDisconnected = false
31
27
this . disconnecting = false
32
28
this . queue = null
33
29
this . options = options
@@ -62,8 +58,8 @@ exports.IpcMessenger = class IpcMessenger {
62
58
}
63
59
}
64
60
65
- const massages = encodeIpcData ( type , data )
66
- this . socket . write ( massages )
61
+ const message = encodeIpcData ( type , data )
62
+ this . socket . write ( message )
67
63
68
64
clearTimeout ( this . idleTimer )
69
65
if ( this . options . disconnectOnIdle ) {
@@ -92,6 +88,7 @@ exports.IpcMessenger = class IpcMessenger {
92
88
if ( ! this . connected || this . disconnecting ) return
93
89
this . disconnecting = true
94
90
this . connecting = false
91
+ this . explicitlyDisconnected = true
95
92
96
93
this . ipcTimer = setTimeout ( ( ) => {
97
94
this . _disconnect ( )
@@ -116,44 +113,38 @@ exports.IpcMessenger = class IpcMessenger {
116
113
}
117
114
118
115
_disconnect ( ) {
119
- if ( ! this . socket ) {
120
- return
121
- }
122
116
this . connected = false
123
117
this . disconnecting = false
124
- this . disconnected = true
125
- this . socket . destroy ( )
118
+ if ( this . socket ) {
119
+ this . socket . destroy ( )
120
+ }
126
121
this . _reset ( )
127
122
}
128
123
129
- _onMessage ( massage ) {
130
- let { type, data } = massage
124
+ _onMessage ( message ) {
125
+ let { type, data } = message
131
126
if ( type === 'ack' ) {
132
127
if ( data . ok ) {
133
128
clearTimeout ( this . ipcTimer )
134
129
this . _disconnect ( )
135
130
}
136
- } else {
137
- this . listeners . forEach ( ( resolve , reject ) => {
131
+ } else if ( type === 'message' ) {
132
+ this . listeners . forEach ( ( fn ) => {
138
133
if ( this . options . namespaceOnProject && data . _projectId ) {
139
134
if ( data . _projectId === PROJECT_ID ) {
140
135
data = data . _data
141
136
} else {
142
137
return
143
138
}
144
139
}
145
- if ( type === 'error' ) {
146
- reject ( data )
147
- } else {
148
- resolve ( data )
149
- }
140
+ fn ( data )
150
141
} )
151
142
}
152
143
}
153
144
154
145
_connectTo ( ) {
155
- const pipPath = getPipePath ( this . id )
156
- const socket = net . createConnection ( { path : pipPath } )
146
+ const ipcPath = getIpcPath ( this . id )
147
+ const socket = net . createConnection ( { path : ipcPath } )
157
148
socket . setEncoding ( 'utf-8' )
158
149
159
150
socket . on ( 'connect' , ( ) => {
@@ -163,32 +154,28 @@ exports.IpcMessenger = class IpcMessenger {
163
154
this . queue = null
164
155
} )
165
156
166
- socket . on ( 'data' , ( massages ) => {
167
- const queue = parseIpcData ( massages , this . reserveData )
168
- queue . forEach ( massage => {
169
- this . _onMessage ( massage )
157
+ socket . on ( 'data' , ( data ) => {
158
+ const messages = decodeIpcData ( data )
159
+ messages . forEach ( message => {
160
+ this . _onMessage ( message )
170
161
} )
171
162
} )
172
163
173
164
socket . on ( 'close' , ( ) => {
174
- if ( this . disconnected ) {
165
+ if ( this . explicitlyDisconnected ) {
166
+ this . _disconnect ( )
175
167
return
176
168
}
177
169
setTimeout ( ( ) => {
178
- if ( this . disconnected ) {
179
- this . _disconnect ( )
180
- return
181
- }
182
170
this . _connectTo ( )
183
171
} , this . retry )
184
172
} )
185
173
186
- socket . on ( 'error' , ( error ) => {
187
- const massage = {
174
+ socket . on ( 'error' , ( err ) => {
175
+ this . _onMessage ( {
188
176
type : 'error' ,
189
- data : error
190
- }
191
- this . _onMessage ( massage )
177
+ data : err
178
+ } )
192
179
} )
193
180
194
181
this . socket = socket
0 commit comments