如何打开浏览器并仅在节点中使用该实例

时间:2015-03-26 16:11:11

标签: node.js

我设置了以下节点代理服务器,以从一个Web应用程序发出的请求中去除页面名称,并使用它在第二个Web应用程序中显示页面信息。 它工作正常但是对于截获的每个请求,都会打开一个新的浏览器。 反正有没有检测到Internet Explorer浏览器是否打开,以便我可以使用它?

var http = require('http'),
  httpProxy = require('http-proxy'),
  request = require('request'),
  open = require('open');


// 
// Create proxy server  
// 
httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(9085);

// 
// Create target server 
// 
http.createServer(function (req, res) {

if (req.method=='GET') {
  if (req.url.indexOf("Page.do") > -1) {

    var temp = req.url.split("Page.do")[0].split("/");
    var pageName = temp[temp.length - 1];

    var docURL = "http://localhost:9081/mysecondwebapp/pages/" + pageName +     ".html";  

    open(docURL, "iexplore");   
   };
  };

}).listen(9000);

1 个答案:

答案 0 :(得分:0)

以下是我在评论中谈到的iframe + socket.io解决方案。我使用express.io module因为我比original socket.io module更熟悉它。

这是服务器端代码:

app = require('express.io')();
app.http().io();

var base = 'http://www.w3schools.com/tags/tag_';

// Send the client html.
app.get('/', function(req, res) {
  res.sendfile(__dirname + '/client.html');
})

app.post('/:tag', function(req, res) {
  // Send new url to the all active clients
  app.io.broadcast('update', {
    url: base + req.params.tag + '.asp'
  });
  // End original request
  res.send(200);
})

app.listen(9000);

client.htmliframe和简单的JS代码段:

<!DOCTYPE html>
<html>
  <head>
    <script src="/socket.io/socket.io.js"></script>
    <style type="text/css">
      body iframe {
        overflow: hidden;
        overflow-x: hidden;
        overflow-y: hidden;
        position: absolute;
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0
      }
  </style>
  </head>
  <body>
    <iframe id="frame" frameborder="0" height="100%" width="100%"></iframe>
    <script>
      io = io.connect();
      frame = document.getElementById('frame');
      io.on('update', function(data) {
        frame.src = data.url;
      });
    </script>
  </body>
</html>

以下是它的工作原理:

  1. 启动node.js服务器,然后在浏览器中导航至localhost:9000
  2. 使用curl或任何其他http实用程序向localhost:9000/iframe发送POST请求。
  3. 您会在先前打开的窗口中看到w3schools page for iframe tag
  4. 发送另一个POST请求以查看其他标记的帮助。
  5. 我希望这个简单的例子可以帮助你。

    以下是我用来编写它的所有链接: