基于node.js的快速開發(fā)透明代理
node.js的非常大的一個特點就是事件驅(qū)動,在開發(fā)服務(wù)器端服務(wù)的時候顯得非常方便。昨晚在新浪的@timYang也提到了node.js,估計新浪微博也注意到了它的優(yōu)點。同時,淘寶最近也表示對node.js有相當(dāng)?shù)呐d趣。參見:http://www.tbdata.org/archives/1285 http://www.tbdata.org/archives/1292 ,為了體驗一把,就用node.js寫了一個透明的代理服務(wù)層,代碼如下:
var net = require('net');
var proxyhost="127.0.0.1";//被代理的服務(wù)的IP
var proxyport=3306;//被代理的端口
var listenport=8124;//代理端口
net.createServer(function (socket) {
socket.on("connect",function(){
console.log('connected');
try{
var db=net.createConnection(proxyport,proxyhost);
db.on("connect",function(){
console.log("server connected");
socket.on("data", function (data) {
db.write(data);
});
db.on("data",function(data){
console.log(data.toString('utf8',0,data.legnth));
//console.log(data);
socket.write(data);
});
socket.on("close",function(){
console.log("server closed");
db.destroy();
});
});
db.on("error",function(data){
console.log("error:\r\n"+data);
});
db.on("end",function(){
console.log("server closed");
socket.destroy();
});
}catch(err){
console.log(err);
}
});
}).listen(listenport, "0.0.0.0");
//用于測試,生產(chǎn)環(huán)境需考慮穩(wěn)定性代碼處理
OK,大功告成,只用了一點點的時間,是的,就是這么簡單。我們把proxyhost,proxyport=3306改成本機(jī)的一個數(shù)據(jù)上,啟動后,我用mysql客戶端連8124,就可以連上3306端口的數(shù)據(jù)庫了。
不僅僅是數(shù)據(jù)庫,把proxyhost,proxyport指向到memcached,那么就變成memcached代理了。
通過console.log你可以非常方便的調(diào)試協(xié)議。也可以用來監(jiān)視某些不開放的協(xié)議。
使用node.js開發(fā)網(wǎng)絡(luò)服務(wù)應(yīng)用程序,比如代理層,httpserver處理非常方便。
剛剛有朋友提出了一個 bug ,謝謝這位朋友。
相關(guān)文章
JavaScript中的appendChild()方法示例詳解
這篇文章主要介紹了JavaScript中的appendChild()方法,appendChild()方法是向節(jié)點添加最后一個子節(jié)點,也可以使用此方法從一個元素向另一個元素移動元素,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10JavaScript實現(xiàn)給定時間相加天數(shù)的方法
這篇文章主要介紹了JavaScript實現(xiàn)給定時間相加天數(shù)的方法,涉及JavaScript針對日期與時間操作相關(guān)技巧,需要的朋友可以參考下2016-01-01JavaScript 自動分號插入(JavaScript synat:auto semicolon insertion)
今天在看《Extjs中文手冊》的時候,寫了四五行樣例代碼,結(jié)果IE和Firefox一直報錯不通過。2009-11-11微信小程序?qū)W習(xí)筆記之函數(shù)定義、頁面渲染圖文詳解
這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之函數(shù)定義、頁面渲染,結(jié)合實例形式較為詳細(xì)的分析了微信小程序中函數(shù)的定義、生命周期、模板調(diào)用、樣式控制等操作技巧,并配合圖文形式進(jìn)行了詳細(xì)說明,需要的朋友可以參考下2019-03-03在mpvue框架中使用Vant WeappUI組件庫的注意事項【推進(jìn)】
這篇文章主要介紹了在mpvue框架中使用Vant WeappUI組件庫的注意事項,本文給大家提到了引入組件庫的兩種方法,需要的朋友可以參考下2019-06-06百度地圖去掉marker覆蓋物或者去掉maker的label文字方法
下面小編就為大家分享一篇百度地圖去掉marker覆蓋物或者去掉maker的label文字方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01