节点服务器实时回显 POST/URL 参数

Node server to echo POST/URL parameters in real time

我正在做一个项目,通过 Arduino 将温度数据发送到节点服务器。 Arduino通过URL参数向服务器发送数据:

http://localhost:3000/submit?temprature=25

然后我使用以下节点获取发布的数据 server.js

var express = require('express');
url = require('url');
var app = express();
app.get('/submit', function(req, res){
  var data = url.parse(req.url,true).query;
  console.log(data);
});
app.listen(3000, function(){
  console.log('listening on *:3000');
});

我可以用 console.log() 显示所需的数据,但我想要的是,一旦 Arduino 通过 URL 参数发送数据,该数据应该自动 echo/print 在服务器上:http://localhost:3000/index.html 就像实时一样。我怎样才能做到这一点?

您可以使用socket.io在您的arduino设备每次更新温度时发出事件:

var http = require('http');
var url = require('url');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);  //pass a http.Server instance
server.listen(3000);  

app.get('/submit', function(req, res){
  var data = url.parse(req.url,true).query;
  io.emit('temperature', data);
  res.send('Temperature Updated to: ' + data.temperature);
});

app.get('/index', function(req, res){
    res.sendFile(__dirname + '/public/index.html');
});

然后在客户端,可以监听事件,更新信息。这是 public/index.html:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Socket.IO Temperature Example</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
</head>
<body>

    <h1 id="temperature"></h1>

    <script>
      var socket = io('http://localhost:3000');
      socket.on('temperature', function (data) {
        console.log(data);
        $('h1#temperature').html(data.temperature);
      });
    </script>

</body>
</html>