mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
keepalive sockets
This commit is contained in:
parent
63b016c8ef
commit
dad211e71c
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@ node_modules
|
|||||||
cov
|
cov
|
||||||
atest.js
|
atest.js
|
||||||
notes
|
notes
|
||||||
|
prismus-proxy.js
|
||||||
|
|||||||
@ -33,3 +33,12 @@ common.setupOutgoing = function(outgoing, options, req, forward) {
|
|||||||
|
|
||||||
return outgoing;
|
return outgoing;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
common.setupSocket = function(socket) {
|
||||||
|
socket.setTimeout(0);
|
||||||
|
socket.setNoDelay(true);
|
||||||
|
|
||||||
|
socket.setKeepAlive(true, 0);
|
||||||
|
|
||||||
|
return socket;
|
||||||
|
};
|
||||||
|
|||||||
@ -72,11 +72,15 @@ function XHeaders(req, socket, options) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function stream(req, socket, options, head) {
|
function stream(req, socket, options, head) {
|
||||||
|
common.setupSocket(socket);
|
||||||
|
|
||||||
var proxyReq = http.request(
|
var proxyReq = http.request(
|
||||||
common.setupOutgoing(options.ssl || {}, options, req)
|
common.setupOutgoing(options.ssl || {}, options, req)
|
||||||
);
|
);
|
||||||
|
|
||||||
proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {
|
proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {
|
||||||
|
common.setupSocket(proxySocket);
|
||||||
|
|
||||||
if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);
|
if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);
|
||||||
|
|
||||||
socket.write('HTTP/1.1 101 Switching Protocols\r\n');
|
socket.write('HTTP/1.1 101 Switching Protocols\r\n');
|
||||||
|
|||||||
50
primus-proxy.js
Normal file
50
primus-proxy.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
var http = require('http');
|
||||||
|
var caronte = require('./');
|
||||||
|
var Primus = require('primus');
|
||||||
|
|
||||||
|
var server = http.createServer(function (req, res) {
|
||||||
|
res.writeHead(500);
|
||||||
|
res.end('Not Implemented\n');
|
||||||
|
});
|
||||||
|
|
||||||
|
var primus = new Primus(server, { transformer: 'engine.io' });
|
||||||
|
var Socket = primus.Socket;
|
||||||
|
|
||||||
|
primus.on('error', function (err) {
|
||||||
|
console.log('Primus ' + err);
|
||||||
|
});
|
||||||
|
|
||||||
|
primus.on('connection', function (spark) {
|
||||||
|
spark.write({ from: 'server', to: 'client' });
|
||||||
|
|
||||||
|
spark.on('data', function (data) {
|
||||||
|
console.dir(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
primus.on('disconnection', function (spark) {
|
||||||
|
console.log('disconnected');
|
||||||
|
});
|
||||||
|
|
||||||
|
server.listen(9000);
|
||||||
|
|
||||||
|
var proxy = caronte.createProxyServer({
|
||||||
|
ws: true,
|
||||||
|
target: 'http://localhost:9000'
|
||||||
|
});
|
||||||
|
|
||||||
|
var srv = proxy.listen(3000);
|
||||||
|
|
||||||
|
var socket = new Socket('http://localhost:3000');
|
||||||
|
|
||||||
|
socket.on('reconnecting', function () {
|
||||||
|
console.log('reconnecting');
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('open', function () {
|
||||||
|
socket.write({ from: 'client', to: 'server' })
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('data', function (data) {
|
||||||
|
console.dir(data);
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user