如何修改我在node.js的服务页面(How do I modify the page I'

2019-10-24 05:41发布

好了,我有我的server.js

var express     = require("express"),
    app         = express(),
    bodyParser  = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(express.static(__dirname + '/'));

app.post('/message', function(req, res) {
  var jsonData = req.body;
  if (jsonData.hasOwnProperty('phone1')) {
      console.log("Phone 1 is connected to", jsonData.phone1.connection,
                  "and has a downlink speed of", jsonData.phone1.dl, "Mbps");
  } else 
  if (jsonData.hasOwnProperty('phone2')) {
      console.log("Phone 2 is connected to", jsonData.phone2.connection,
                  "and has a downlink speed of", jsonData.phone2.dl, "Mbps");
  }
});

var port = 1337;
app.listen(port);
console.log("Running at Port " + port);

正如你看到我希望在服务器获取的东西贴在/消息做的东西。 我可以CONSOLE.LOG东西,是的,但我想改变网页此服务器服务于 该POST请求从另一台服务器来。 该服务器只介绍他们。

我如何能做到这一点,而不必更新网页?

我还使用在客户端AngularJS,所以任何方式对客户端拿起JSON数据将是很好。

我希望在我Highcharts仪表和图表呈现的数据,但一个页面元素(例如,在一个简单的文本更新<p id="example">会为这个问题的答案做就好了。

我知道我能得到jQuery来节点,但我仍然缺乏窗口元素操纵提供的数据。 NW.js可能会做正是我想要的,我还没有尝试过还是不过它,但我怀疑有可能是另一种解决这个问题。

Answer 1:

如果你想要把新的内容给客户端(相反流向客户端从服务器请求数据)的WebSockets是一个选项(参见http://socket.io/为了一个共同的库)。

或者,您可以在客户端设置长轮询。 这是使用JavaScript来定期“轮询”使用信息的服务器setInterval或类似的方法。



Answer 2:

因为我只需要从服务器向客户端发送数据时,我结束了与服务器发送事件(SSE)和我的代码看起来像这样在服务器端:

var mypage;

app.get('/connect', function(req, res){
    res.writeHead(200, {
      'Connection': 'keep-alive',
      'Content-Type': 'text/event-stream',
      'Cache-Control': 'no-cache'
    });
    mypage = res;
});

app.post('/message', function(req, res) {
    if (mypage !== undefined) {
        mypage.write('data: '+ JSON.stringify( req.body ) +'\n\n');
    }
});

并在客户端:

$(function () {
    var server = new EventSource('/connect'),
        point1 = $("#gauge1").highcharts().series[0].points[0],
        point2 = $("#gauge2").highcharts().series[0].points[0];
    server.onmessage = function(e) {
        var jsonData = JSON.parse(e.data);
        if (jsonData.hasOwnProperty('phone1')) {
            point1.update(parseInt(jsonData.phone1.dl));
            if (jsonData.phone1.connection === "3G") {
                /* extra functionality */
            } else {
                /* extra functionality */
            }
        } else 
        if (jsonData.hasOwnProperty('phone2')) {
            point2.update(parseInt(jsonData.phone2.dl));
            if (jsonData.phone2.connection === "3G") {
                /* extra functionality */
            } else {
                /* extra functionality */
            }
        }
    };
});

我得到了额外的帮助, 我的其他问题有关上证所的数据格式

节点的Webkit没有回答我的问题,因为它不会在浏览器中运行。

我仍然有一些问题,收到了许多文章。 我生成每个0.5sa岗位信息,但我不断收到5封邮件则没有2分钟,然后再5级的消息。 我不知道为什么会发生的事情,但它不是这个问题的一部分,所以我会后有关的另一个问题。



文章来源: How do I modify the page I'm serving in node.js