我是To Node js的新手,我需要快速帮助。
我有一个node.js应用程序,它通过GET请求从另一个应用程序接收数据,例如:GET /api/users?data=26'-每30秒。我的节点应用程序代码如下所示:

 var express = require('express');
 var app = express();
 var port = process.env.PORT || 8080
 app.set('views', __dirname + '/views');
 app.set('view engine', 'jade');
 var router = express.Router();

 router.get('/api/users', function(req, res) {
 var query = req.param('data');
 //I need to pass data to the view without refreshing browser
 });

 app.use(router);

 app.listen(port)


我需要将数据传递到视图(我有一个模板home.jade),而无需用户刷新浏览器。因此,由于请求每30秒发送一次,用户将看到数据每30秒更改一次而无需刷新浏览器。我该如何完成?先感谢您。

最佳答案

您可以使用套接字,而无需成为专家即可实施它,只需尝试一下

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

io.on('connection', function (socket) { // connection event handler
  socket.emit('client-listener', { data: 'hello world' }); // send info to the client, you can send an object with whatever info you want.
  socket.on('server-listener', function (data) { //listening from the client
    console.log(data.text); // should print 'from client'
  });
});
//Client Side:
<script src="/socket.io/socket.io.js"></script> //reference to your script

<script>
  var socket = io.connect('http://localhost');
  socket.on('client-listener', function (data) {
    console.log(data); // should print hello world
    socket.emit('server-listener', { text: 'from client' }); //send data to the server
  });
</script>


这些是使用套接字的基本“功能”,您可以在socket.io上了解更多信息

我不满意每隔x秒钟执行一次ajax请求,这对我来说不合适,请查看SO question并自己​​决定哪种方法是您最好的选择。

10-05 20:52