simpler wait-for-port

This commit is contained in:
Rich Harris
2018-03-04 11:25:59 -05:00
committed by GitHub
parent 4d79cb81ed
commit bdb9d49187
4 changed files with 25 additions and 26 deletions

View File

@@ -39,7 +39,6 @@
"source-map-support": "^0.5.3",
"tslib": "^1.8.1",
"url-parse": "^1.2.0",
"wait-port": "^0.2.2",
"walk-sync": "^0.3.2",
"webpack": "^3.10.0"
},
@@ -72,7 +71,7 @@
"pretest": "npm run build",
"build": "rollup -c",
"dev": "rollup -cw",
"prepublish": "npm test",
"prepublishOnly": "npm test",
"update_mime_types": "curl http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types | grep -e \"^[^#]\" > src/middleware/mime-types.md"
},
"repository": "https://github.com/sveltejs/sapper",

View File

@@ -144,7 +144,7 @@ export default async function dev() {
deferreds.client.promise.then(() => {
function restart() {
wait_for_port(3000, deferreds.server.fulfil); // TODO control port
wait_for_port(3000).then(deferreds.server.fulfil); // TODO control port
}
if (proc) {

View File

@@ -88,8 +88,7 @@ export default async function exporter(export_dir: string) {
});
}
wait_for_port(port, () => {
handle(new URL(origin)) // TODO all static routes
.then(() => proc.kill())
});
wait_for_port(port)
.then(() => handle(new URL(origin))) // TODO all static routes
.then(() => proc.kill());
}

View File

@@ -1,24 +1,25 @@
import waitPort from 'wait-port';
import * as net from 'net';
export function wait_for_port(port: number, cb: () => void) {
waitPort({ port }).then(cb);
export function wait_for_port(port: number, timeout = 5000) {
return new Promise((fulfil, reject) => {
get_connection(port, fulfil);
setTimeout(() => reject(new Error(`timed out waiting for connection`)), timeout);
});
}
// import * as net from 'net';
export function get_connection(port: number, cb: () => void) {
const socket = net.createConnection(port, 'localhost', () => {
cb();
socket.destroy();
});
// export function wait_for_port(port: number, cb: () => void) {
// const socket = net.createConnection(port, 'localhost', () => {
// cb();
// socket.destroy();
// });
socket.on('error', err => {
setTimeout(() => {
get_connection(port, cb);
}, 10);
});
// socket.on('error', err => {
// setTimeout(() => {
// wait_for_port(port, cb);
// }, 100);
// });
// setTimeout(() => {
// socket.destroy();
// }, 100);
// }
setTimeout(() => {
socket.destroy();
}, 1000);
}