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
|
||||
atest.js
|
||||
notes
|
||||
prismus-proxy.js
|
||||
|
||||
@ -33,3 +33,12 @@ common.setupOutgoing = function(outgoing, options, req, forward) {
|
||||
|
||||
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) {
|
||||
common.setupSocket(socket);
|
||||
|
||||
var proxyReq = http.request(
|
||||
common.setupOutgoing(options.ssl || {}, options, req)
|
||||
);
|
||||
|
||||
proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {
|
||||
common.setupSocket(proxySocket);
|
||||
|
||||
if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);
|
||||
|
||||
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