用node做代理服务器

前端node服务器采用sails框架,代理模块使用的是node-http-proxy

问题:

所有数据都是从后端java服务器拿的,而且要屏蔽后端服务器,所以要在前端做服务器代理转发。对于http请求的转发,在http.js文件中加入一个转发中间件即可,如下:

forwardProxy: function (req, res, next) {    
  proxy.web(req, res, {target: url});   
}

对于websocket的转发,解决办法如下:

在bootstrap.js中加入如下代码:

var websocketService = function (cb) {   
 var http = require('http'),       
 httpProxy = require('http-proxy');  
  var url = require('url');   
 var urlString = sails.config.collection_api_url;  
  var result = url.parse(urlString);   
 var proxy = new httpProxy.createProxyServer({   
     target: {          
  host: result.hostname,       
     port: result.port     
   }  
  });  
  var proxyServer = http.createServer();    
proxyServer.on('upgrade', function (req, socket, head) {   
     proxy.ws(req, socket, head);  
  });   
 proxyServer.listen(1338);}

前端页面

var ws = new WebSocket(url);
ws.onopen = function () {}
ws.onmessage = function (event) {  
  showAlert(event.data);
}

后端服务器对websocket的处理请看Spring WebScoket 消息推送及问题总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,431评论 0 25
  • 问世间,情为何物,只教生死相许?天南地北双飞客,老翅几回寒暑。欢乐趣,离别苦,就中更有痴儿女。君应有语,渺万里层云...
    何潇湘阅读 710评论 2 11
  • 晕了一天的车,回酒店后就一直睡着,睡醒吃了泡面就去了海边。看着大海潮起潮落,我竟是觉得有点伤感。浪把我写的字覆灭,...
    棉小白阅读 141评论 0 0