基于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 ,谢谢这位朋友。

时间: 2024-10-04 06:03:19

基于node.js的快速开发透明代理_javascript技巧的相关文章

使用 Node.js 做 Function Test实现方法_javascript技巧

Info上周 meeting 上同事说他们现在在用 java 写 function test,产生了很多冗余的代码,整个项目也变得比较臃肿.现在迫切需要个简单的模板项目能快速搭建function test. 后来我回去想了想,为什么我们非得用 java 来做 function test 呢? Node.js 应该是个不错的选择,并且对 json 有着天然的支持,于是回去在 github 上随手一搜,还果真有相关的项目:testosterone,于是便有了这篇blog. Server要做demo,

基于Three.js插件制作360度全景图_javascript技巧

这是个基于three.js的插件,预览地址:戳这里 使用方法: 1.这个插件的用法很简单,引入如下2个js <script src="js/three.min.js"></script> <script src="js/photo-sphere-viewer.min.js"></script> 2.初始化一下,(具体各种参数配置根据情况而定) var PSV = new PhotoSphereViewer({ // 全

纯JavaScript基于notie.js插件实现消息提示特效_javascript技巧

本文实例介绍了纯JavaScript实现消息提示特效是一款基于notie.js插件实现的可以制作Alert提示框,确认框和带输入的消息框,分享给大家供大家参考,具体内容如下 效果图: 实现的代码: html代码: <br><br><br><br><br><br> <article class="zzsc"> <div class="div-ext"> <div cl

Vue.js组件使用开发实例教程_javascript技巧

组件 组件可以扩展HTML元素,封装可重用的代码,在较高的层面上,组件是自定义元素,vue.js的编译器为它添加特殊功能,在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. Vue.js的组件可以理解为预先定义好了行为的ViewModel类.一个组件可以预定义很多选项,但最核心的是以下几个: 模板(template):模板声明了数据和最终展现给用户的DOM之间的映射关系. 初始数据(data):一个组件的初始数据状态.对于可复用的组件来说,这通常是私有的状态. 接受的外部参数(p

sencha ext js 6 快速入门(必看)_javascript技巧

Sencha Ext JS号称是目前世界上最先进和最强大的.支持多平台多设备的JavaScript应用程序开发框架.首先看一下Ext JS的发展简史. 1 Ext JS发展简史 1.YUI-Ext的作者Jack Slocum(杰克.斯洛克姆)打算对基于BSD协议的Yahoo User Interface (YUI)库进行自定义的扩展,但后来一度风头盖过其父辈YUI: 2.在2006年底,YUI-Ext被简化为Ext,反映了它作为一个框架的成熟和独立.该公司成立于2007年初,Ext现在为双执照,

跟我学Node.js(四)---Node.js的模块载入方式与机制_javascript技巧

其它的如通过NPM安装的第三方模块(third-party modules)或本地模块(local modules),每个模块都会暴露一个公开的API.以便开发者可以导入.如 复制代码 代码如下: var mod = require('module_name') 此句执行后,Node内部会载入内置模块或通过NPM安装的模块.require函数会返回一个对象,该对象公开的API可能是函数,对象,或者属性如函数,数组,甚至任意类型的JS对象. 这里列下node模块的载入及缓存机制 1)载入内置模块(

基于vue.js实现图片轮播效果_javascript技巧

轮播图效果: 1.html <template> <div class="shuffling"> <div class="fouce fl"> <div class="focus"> <ul class="showimg"> <template v-for='sd in shufflingData'> <li v-if='shufflingId==$

深入浅出node.js游戏服务器开发:基于Pomelo的MMO RPG开发

在上一篇文章中,我们介绍了如何使用Pomelo来搭建聊天服务器.在这篇文章中,我们为大家介绍 如何使用Pomelo框架来搭建MMO RPG服务器,并分析其设计思路和实现方法.以此来帮助大家更好的理 解和使用Pomelo框架,理解Pomelo框架游戏开发的基础流程,使用方法和设计理念. 本文中的游戏服务端架构,只是为了说明Pomelo的开发理念和设计思路,并不是基于Pomelo开发的 唯一方案,开发者完全可以根据自己的实际应用环境设计不同的服务端架构. 开始之前 Pomelo框架与MMO RPG

《Node.js区块链开发》导读

Preface 前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是