* start the proxy server * * @returns ProxyCore * * @memberOf ProxyCore
()
| 152 | * @memberOf ProxyCore |
| 153 | */ |
| 154 | start() { |
| 155 | const self = this; |
| 156 | self.socketIndex = 0; |
| 157 | self.socketPool = {}; |
| 158 | |
| 159 | if (self.status !== PROXY_STATUS_INIT) { |
| 160 | throw new Error('server status is not PROXY_STATUS_INIT, can not run start()'); |
| 161 | } |
| 162 | async.series( |
| 163 | [ |
| 164 | //creat proxy server |
| 165 | function (callback) { |
| 166 | if (self.proxyType === T_TYPE_HTTPS) { |
| 167 | certMgr.getCertificate(self.proxyHostName, (err, keyContent, crtContent) => { |
| 168 | if (err) { |
| 169 | callback(err); |
| 170 | } else { |
| 171 | self.httpProxyServer = https.createServer({ |
| 172 | key: keyContent, |
| 173 | cert: crtContent |
| 174 | }, self.requestHandler.userRequestHandler); |
| 175 | callback(null); |
| 176 | } |
| 177 | }); |
| 178 | } else { |
| 179 | self.httpProxyServer = http.createServer(self.requestHandler.userRequestHandler); |
| 180 | callback(null); |
| 181 | } |
| 182 | }, |
| 183 | |
| 184 | //handle CONNECT request for https over http |
| 185 | function (callback) { |
| 186 | self.httpProxyServer.on('connect', self.requestHandler.connectReqHandler); |
| 187 | |
| 188 | callback(null); |
| 189 | }, |
| 190 | |
| 191 | function (callback) { |
| 192 | wsServerMgr.getWsServer({ |
| 193 | server: self.httpProxyServer, |
| 194 | connHandler: self.requestHandler.wsHandler |
| 195 | }); |
| 196 | // remember all sockets, so we can destory them when call the method 'close'; |
| 197 | self.httpProxyServer.on('connection', (socket) => { |
| 198 | self.handleExistConnections.call(self, socket); |
| 199 | }); |
| 200 | callback(null); |
| 201 | }, |
| 202 | |
| 203 | //start proxy server |
| 204 | function (callback) { |
| 205 | self.httpProxyServer.listen(self.proxyPort); |
| 206 | callback(null); |
| 207 | }, |
| 208 | ], |
| 209 | |
| 210 | //final callback |
| 211 | (err, result) => { |
no outgoing calls
no test coverage detected