如何在HTML中的nodejs中显示实时变量

时间:2017-01-12 17:39:42

标签: node.js sockets socket.io real-time

我正在使用setInterval()函数在NodeJS中每隔'x'秒更新一些变量(各种API的价格)

我希望在HTML中显示这些变量,并让它们每隔'x'秒实时更新一次。

如何使用Socket.io或不使用它来解决这个问题

2 个答案:

答案 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>

我的代码不完整,但显示必须知道。