基于node.js的快速开发透明代理


Posted in Javascript onDecember 25, 2010

但是最近服务器端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 ,谢谢这位朋友。

Javascript 相关文章推荐
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
使用Raygun对Node.js应用进行错误处理的方法
Jun 23 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
JavaScript实现复制文章自动添加版权
Aug 02 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
Dec 02 Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
React事件处理的机制及原理
Dec 03 Javascript
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
JS实现音乐导航特效
Jan 06 Javascript
用方法封装javascript的new操作符(一)
Dec 25 #Javascript
一些javascript一些题目的解析
Dec 25 #Javascript
javascript字符串拼接的效率问题
Dec 25 #Javascript
原生javascript获取元素样式属性值的方法
Dec 25 #Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 #Javascript
Javascript动态绑定事件的简单实现代码
Dec 25 #Javascript
浅析javascript闭包 实例分析
Dec 25 #Javascript
You might like
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
ArrayList类(增强版)
2007/04/04 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python使用爬虫猜密码
2016/02/19 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
英格兰足协官方商店:England Store
2019/07/12 全球购物
会计找工作求职信范文
2013/12/09 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
食品安全承诺书
2014/05/22 职场文书
酒店开业策划方案
2014/06/02 职场文书
结婚通知短信大全
2015/04/17 职场文书
开天辟地观后感
2015/06/09 职场文书
Python实现简单的猜单词
2021/06/15 Python