Created
July 5, 2013 16:57
-
-
Save eendeego/5935839 to your computer and use it in GitHub Desktop.
How to delay responses on connect middleware, eg, to test timeouts, on a yeoman's generated gruntfile.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; | |
var mountFolder = function (connect, dir) { | |
return connect.static(require('path').resolve(dir)); | |
}; | |
// ... | |
var connectDelayer = function (connect, test, delay) { | |
var DelayedStream = require('delayed-stream'); | |
return function (req, res, next) { | |
if (test(req)) { | |
var delayed = DelayedStream.create(req); | |
setTimeout(function() { | |
delayed.resume(); | |
}, delay); | |
} | |
return next(); | |
}; | |
}; | |
// ... | |
connect: { | |
livereload: { | |
options: { | |
debug: true, | |
port: 9000, | |
// Change this to '0.0.0.0' to access the server from outside. | |
hostname: 'localhost', | |
middleware: function (connect) { | |
return [ | |
queryParser(connect), | |
connectDelayer(connect, function (req) { | |
return req._parsedUrl.pathname === '/lookup' && req.query.entity === 'value'; // or some other condition | |
}, 5000), // delay | |
proxySnippet, | |
lrSnippet, | |
mountFolder(connect, '.tmp'), | |
mountFolder(connect, yeomanConfig.app) | |
]; | |
} | |
} | |
}, | |
// ... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I wrote a grunt plugin to automate the process a little bit
grunt-connect-delay
.