我正在使用setInterval()函数在NodeJS中每隔'x'秒更新一些变量(各种API的价格)
我希望在HTML中显示这些变量,并让它们每隔'x'秒实时更新一次。
如何使用Socket.io或不使用它来解决这个问题
答案 0 :(得分:0)
尝试模板和模板引擎。 模板引擎是可以将变量传递给模板的东西。这些引擎使用您以HTML页面形式提供的数据呈现模板文件。
我建议您尝试使用“ejs”,因为它非常接近HTML文件。 ejs模板只是带有文件夹的HTML语法,您可以传递数据。
但这需要您在常规时间后不断刷新页面。所以你可以试试AJAX'它让你刷新部分页面,同时从服务器发送和接收数据
答案 1 :(得分:0)
如果您不想使用socket.io
,可以使用AJAX
来电,但我认为这是更痛苦的方式......
如果你使用socket.io
,他们的GitHub就有很多很好的例子:Chat example。
在你的NodeJS中:
var io = require('socket.io')(8080); // The port should be different of your HTTP server.
io.on('connection', function (socket) { // Notify for a new connection and pass the socket as parameter.
console.log('new connection');
var incremental = 0;
setInterval(function () {
console.log('emit new value', incremental);
socket.emit('update-value', incremental); // Emit on the opened socket.
incremental++;
}, 1000);
});
此代码应在您的应用程序中启动。
在你看来:
<html>
<body>
<pre id="incremental"></pre>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
var socket = io('http://localhost:8080'); // Connect the socket on the port defined before.
socket.on('update-value', function (value) { // When a 'update-value' event is received, execute the following code.
console.log('received new value', value);
$('#incremental').html(value);
});
</script>
</body>
</html>
我的代码不完整,但显示必须知道。