Skip to content

Commit d7064f2

Browse files
committed
[examples] added error-handling using callbacks and HTTP-to-HTTPS examples
1 parent de3ff11 commit d7064f2

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

examples/http/error-handling.js

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
error-handling.js: Example of handle erros for HTTP and WebSockets
3+
4+
Copyright (c) Nodejitsu 2013
5+
6+
Permission is hereby granted, free of charge, to any person obtaining
7+
a copy of this software and associated documentation files (the
8+
"Software"), to deal in the Software without restriction, including
9+
without limitation the rights to use, copy, modify, merge, publish,
10+
distribute, sublicense, and/or sell copies of the Software, and to
11+
permit persons to whom the Software is furnished to do so, subject to
12+
the following conditions:
13+
14+
The above copyright notice and this permission notice shall be
15+
included in all copies or substantial portions of the Software.
16+
17+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24+
25+
*/
26+
27+
var util = require('util'),
28+
colors = require('colors'),
29+
http = require('http'),
30+
httpProxy = require('../../lib/http-proxy');
31+
32+
//
33+
// HTTP Proxy Server
34+
//
35+
var proxy = httpProxy.createProxyServer({target:'http://localhost:9000', ws:true});
36+
37+
//
38+
// Example of error handling
39+
//
40+
function requestHandler(req, res) {
41+
// Pass a callback to the web proxy method
42+
// and catch the error there.
43+
proxy.web(req, res, function (err) {
44+
// Now you can get the err
45+
// and handle it by your self
46+
// if (err) throw err;
47+
res.writeHead(502);
48+
res.end("There was an error proxying your request");
49+
});
50+
51+
// In a websocket request case
52+
req.on('upgrade', function (req, socket, head) {
53+
proxy.ws(req, socket, head, function (err) {
54+
// Now you can get the err
55+
// and handle it by your self
56+
// if (err) throw err;
57+
socket.close();
58+
})
59+
})
60+
}
61+
62+
http.createServer(requestHandler).listen(8000);
63+
util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);

examples/http/proxy-http-to-https.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
proxy-http-to-https.js: Basic example of proxying over HTTP to a target HTTPS server
3+
4+
Copyright (c) Nodejitsu 2013
5+
6+
Permission is hereby granted, free of charge, to any person obtaining
7+
a copy of this software and associated documentation files (the
8+
"Software"), to deal in the Software without restriction, including
9+
without limitation the rights to use, copy, modify, merge, publish,
10+
distribute, sublicense, and/or sell copies of the Software, and to
11+
permit persons to whom the Software is furnished to do so, subject to
12+
the following conditions:
13+
14+
The above copyright notice and this permission notice shall be
15+
included in all copies or substantial portions of the Software.
16+
17+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24+
25+
*/
26+
27+
var https = require('https'),
28+
http = require('http'),
29+
util = require('util'),
30+
path = require('path'),
31+
fs = require('fs'),
32+
colors = require('colors'),
33+
httpProxy = require('../../lib/http-proxy');
34+
35+
//
36+
// Create a HTTP Proxy server with a HTTPS target
37+
//
38+
httpProxy.createProxyServer({
39+
target: 'https://google.com',
40+
agent : https.globalAgent,
41+
headers: {
42+
host: 'google.com'
43+
}
44+
}).listen(8000);
45+
46+
util.puts('http proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8000'.yellow);

0 commit comments

Comments
 (0)