用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 消息推送及问题总结

你可能感兴趣的:(用node做代理服务器)