gpt4 book ai didi

javascript - Node.js Express 网站实时更新数据

转载 作者:行者123 更新时间:2023-12-02 14:34:02 24 4
gpt4 key购买 nike

我正在尝试实现一些我认为应该非常简单的事情,但我发现的所有教程和示例似乎都有点矫枉过正。

我在做什么:我定期获取天气信息,并且希望每次获取时更新网站上的文本,而无需用户刷新浏览器。

几乎所有关于实时数据更新的教程都建议使用socket.io,我已经尝试过,但我无法让它做我想做的事,我开始认为应该有一种更简单的方法, socket.io 可能不是解决这个问题的最佳方法。有什么建议么?如何在网站上获得简单的文本行更新,而无需用户刷新页面?

我的天气脚本:

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


function refreshWeather() {
var temperature = getTemperature();
io.sockets.emit('broadcast', {
temperature : temperature
});
}

我的 Jade 脚本:

doctype html
html
head
link(rel='stylesheet', href='/css/index.css')
title Dashboard
body
script(src='/socket.io/socket.io.js')
script.
var socket = io();
socket.on('broadcast', function (data) {
// UPDATE WEATHER HERE
});

.main-content
h1 Weather is: // I WANT THIS TO BE UPDATED

最佳答案

你可以:

  • 摆脱socket.io。
  • 确定检索温度的终点。
  • 在前端进行一些轮询。

后端看起来像这样:

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

app.get('/weather', function (req, res) {
res.send(getTemperature())
});

前端看起来像这样:

doctype html
html
head
link(rel='stylesheet', href='/css/index.css')
title Dashboard
body
.main-content
h1(id='weather') Weather is: // I WANT THIS TO BE UPDATED
script.
setInterval(function () {
fetch('/some/url', {
method: 'get'
}).then(function(response) {
// UPDATE WEATHER HERE
document.getElementById('weather').innerHTML = response
}).catch(function(err) {
// Error :(
});
}, 1000) // milliseconds

代码完全未经测试,因此请尽量不要复制和粘贴 - 而是对其进行修改。另外,如果您要使用 fetch API ,您可能想使用 polyfill ,否则,只需使用普通 ajax .

关于javascript - Node.js Express 网站实时更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com