让前端js翻墙,充分利用node.js模块
发布于 12 年前 作者 DoubleSpout 15589 次浏览 最后一次编辑是 8 年前

rrestjs的0.8版本发布了,修复了一些bug,新增了一些功能,主要新增加的一块是rrestpipe,让客户端也可以享受node.js模块的福利。其实是基于socketio和now.js实现的。 rrestjs项目地址:www.rrestjs.com 我们先看截图: enter image description here 1、当我们点击get请求按钮后,文本框里出现了前面域名内的内容,包括http的headers还有statuscode,和data也就是正文的字符串,这里是去请求了www.nodejs.org,前端跨域了。 2、当MD5时,把字符串rrestjs经过MD5后出现在右侧 3、读取文件后,根据前面的路径读取服务器的文件输出在右侧,这里读取的是项目根目录的packjson文件 4、序列化是指序列化 url 路径后得到的一个对象。

如果我们随便输入一些内容,就会出错了: enter image description here

服务端会报错,当然有一些简单的错误理由

我们先看服务端是如何注册事件的: 参考文件:https://github.com/DoubleSpout/rrestjs/blob/master/lib/pipe/pipe.js

/*下面就是我们刚才用到的服务端注册的2个方法*/
/*
第一个是 get 方法,异步
不多介绍了
*/

clientpipe.addasy('get', function(url, asyback){
  var http=require('http');
   http.get(url, function(res){
    var body = '';
    res.on('data', function (chunk) {
      body += chunk;
     });
     res.on('end', function(){
     asyback(null, {headers:res.headers, statusCode:res.statusCode, data:body});
     });
   }).on('error', function(e) {
    asyback('get request error');
  });
});


/*
第三个是MD5方法
*/

clientpipe.addsyn('md5', function(str){
 var crypto = require('crypto');
 var shasum = crypto.createHash('md5');
 shasum.update(str);
 return shasum.digest('hex');
});

而我们的客户端只需要做2件事情就可以了: 参考文件:https://github.com/DoubleSpout/rrestjs/blob/master/example/static/pipe.html

<script src="/static/rrestpipe.js"></script>
<!--引入rrestpipe-->      
 rrestpipe.pipe("md5", "abcd", function(err, md5str){    
        alert(md5str);
    })        
    rrestpipe.pipe("get", "http://www.nodejs.org", function(err, res){  
        alert(res.data);//这里返回的是对象    
    })    
});

一个简单的服务端代码是: 地址:https://github.com/DoubleSpout/rrestjs/blob/master/example/rrestpipe.js

module.exports.conf= require('./config/post.conf.js');
var http = require('http'),
 rrest = require('../'),
    server = http.createServer(rrest(function (req, res) {
   res.send(htmlstr);
 })).listen(rrest.config.listenPort);
 rrest.clientpipe(server);

var fs = require('fs');
var htmlstr = fs.readFileSync(__dirname+'/static/pipe.html', 'utf-8')

大家如果感兴趣的话可以 npm install rrestjs 或者去github上下载rrestjs github地址 然后运行里面的 example/rrestpipe.js 实例看下就知道了,默认端口在3000

相信看完本文的TX都会问一个问题,安全如何保证,至于安全就要看你开发什么功能给前端js利用了

12 回复

越来越屌了,娃哈哈

为什么nodejs没有增加图形化编程模块,想写个验证码也只能通过前端来写

用词太粗俗了啊~哈哈

好了下个版本把验证码加上,你可以试着去rrestjs官网留言板发句话,里面是很有爱的验证码哦~ 地址:http://www.rrestjs.com/message

可以当爬虫用不??

可以啊,而且爬虫的代码可以再前端写了,可以利用jquery了

rrestpipe 搞个上流一点的名字?

哇擦,好东西

你帮我取个吧,哈哈~

@snoopy 我有一个专门用来做测试的vps,不介意的话做一个看看~

回到顶部