DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 基於node.js的快速開發透明代理
基於node.js的快速開發透明代理
編輯:關於JavaScript     
但是最近服務器端js的火爆確實因為node.js項目。在velocity china 2010大會Douglas Crockford(Yahoo!)也有一個topic《卷土重來:服務器端JavaScript》提到node.js。關於node.js的詳細資料請google.

      node.js的非常大的一個特點就是事件驅動,在開發服務器端服務的時候顯得非常方便。昨晚在新浪的@timYang也提到了node.js,估計新浪微博也注意到了它的優點。同時,淘寶最近也表示對node.js有相當的興趣。參見:http://www.tbdata.org/archives/1285  http://www.tbdata.org/archives/1292 ,為了體驗一把,就用node.js寫了一個透明的代理服務層,代碼如下:
復制代碼 代碼如下:
var net = require('net');
var proxyhost="127.0.0.1";//被代理的服務的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");
//用於測試,生產環境需考慮穩定性代碼處理

OK,大功告成,只用了一點點的時間,是的,就是這麼簡單。我們把proxyhost,proxyport=3306改成本機的一個數據上,啟動後,我用mysql客戶端連8124,就可以連上3306端口的數據庫了。

不僅僅是數據庫,把proxyhost,proxyport指向到memcached,那麼就變成memcached代理了。

通過console.log你可以非常方便的調試協議。也可以用來監視某些不開放的協議。

使用node.js開發網絡服務應用程序,比如代理層,httpserver處理非常方便。

剛剛有朋友提出了一個 bug ,謝謝這位朋友。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved