将数据传递到视图而不刷新浏览器

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

  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> 

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

如果我每x秒做一个Ajax请求,我感到不舒服,那么对于我来说这并不合适,请看一下这个SO 问题,然后决定自己哪个是最好的方法。

使用AJAX轮询。

在该模板中抛出一个脚本标签。 如果你正在使用jQuery,你可以做类似…

 window.setInterval(function() { // call http server, get payload data and bind to interface // $.get(...) or other ajax method }, 30 * 1000)