microcule icon indicating copy to clipboard operation
microcule copied to clipboard

Using nodejs microcule.plugins.spawn doesn't close connection

Open mphuie opened this issue 8 years ago • 7 comments

The expressjs examples from https://github.com/Stackvana/microcule/tree/master/examples, don't close the connection. Only the javascript code example works as there is a res.end() in it.

mphuie avatar Jul 25 '17 18:07 mphuie

This is on OS X 10.12.4 with Node v6.9.5

mphuie avatar Jul 25 '17 18:07 mphuie

Can you be more specific which example you are having issues with?

There should be a mechanism in place which ends the request when the script completes. It's possible I failed to port over this functionality from hook.io, but I know we did create a way for this to work.

Marak avatar Jul 25 '17 18:07 Marak

Tried these. Only the JS example in express-multi-language.js works

https://github.com/Stackvana/microcule/blob/master/examples/express-multi-language.js https://github.com/Stackvana/microcule/blob/master/examples/express-python.js https://github.com/Stackvana/microcule/blob/master/examples/express-any-binary.js

mphuie avatar Jul 25 '17 18:07 mphuie

I think I got it, one moment.

Marak avatar Jul 25 '17 18:07 Marak

@mphuie - I think I got it. This makes sense. I must have forgotten to update the examples to use the new API semantics.

If you look at https://github.com/Stackvana/microcule/blob/master/examples/express-python.js#L19, you'll see it's now updated and should be working.

Basically, if the response isn't closed inside of a script, we need to have a middleware at the end of the server to catch and close the response. This will only fire if the script itself doesn't close the response.

I'll take the time to update the other examples and see about adding documentation for explicitly closing the request inside non-JS services.

Does that work for you?

Marak avatar Jul 25 '17 18:07 Marak

Yep, that works, doesn't that mean the server will return a 200 regardless of exit code?

mphuie avatar Jul 25 '17 18:07 mphuie

I think right now, it's up to the developer to determine which HTTP status will be sent back into the response. It would probably be correct for us to provide a configurable mapping of HTTP response codes to the exit codes. I believe hook.io is doing this already to some extent.

If you could post some example code or scenarios with what you would expect to see as a result, I would be glad to review and see if we can incorporate it into the project.

Thank you for your feedback.

Marak avatar Jul 25 '17 18:07 Marak