Skip to content

Instantly share code, notes, and snippets.

@eendeego
Created July 5, 2013 16:57
Show Gist options
  • Save eendeego/5935839 to your computer and use it in GitHub Desktop.
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.
'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)
];
}
}
},
// ...
@musically-ut
Copy link

I wrote a grunt plugin to automate the process a little bit grunt-connect-delay.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment