-
Notifications
You must be signed in to change notification settings - Fork 984
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(req): add restifyDone event #1740
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
### restifyDone | ||
|
||
After request has been fully serviced, an `restifyDone` event is fired. | ||
restify considers a request to be fully serviced when either: | ||
|
||
1) The handler chain for a route has been fully completed | ||
2) An error was returned to `next()`, and the corresponding error events have | ||
been fired for that error type | ||
|
||
The signature is for the `restifyDone` event is as follows: | ||
|
||
```js | ||
function(route, error) { } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Any reason not to match the API of server after? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I just thought it would look strange that we pass req in a req event... |
||
``` | ||
|
||
* `route` - the route object that serviced the request | ||
* `error` - the error passed to `next()`, if applicable | ||
|
||
Note that when the server automatically responds with a | ||
`NotFound`/`MethodNotAllowed`/`VersionNotAllowed`, this event will still be | ||
fired. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,6 @@ | ||
toc: | ||
- Request | ||
- name: Events | ||
file: ../api/server-events.md | ||
- name: Log | ||
file: ../api/request-log.md |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -223,3 +223,24 @@ test('should provide date when request started', function(t) { | |
t.end(); | ||
}); | ||
}); | ||
|
||
// restifyDone is emitted at the same time when server's after event is emitted, | ||
// you can find more comprehensive testing for `after` lives in server tests. | ||
test('should emit restifyDone event when request is fully served', function(t) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we add a test for |
||
var clientDone = false; | ||
|
||
SERVER.get('/', function(req, res, next) { | ||
res.send('hello'); | ||
req.on('restifyDone', function() { | ||
t.ok(clientDone); | ||
t.end(); | ||
}); | ||
return next(); | ||
}); | ||
|
||
CLIENT.get('/', function(err, _, res) { | ||
t.ifError(err); | ||
t.equal(res.statusCode, 200); | ||
clientDone = true; | ||
}); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/is/''