【问题标题】:Socket I.o doesn't automatically updateSocket I.o 不会自动更新
【发布时间】:2016-10-05 13:45:44
【问题描述】:

我正在使用 Socket ith,当我发送 POST / EnviaTemperatura 时,我的站点上没有自动更新。我做错了什么?

Node.js

app.post('/EnviaTemperatura', function(req, res){
    temperatura = req.body.temp;
    console.log(temperatura);
    res.send('Temperatura: ' + temperatura);
});

io.on("connection", function(socket) {
    socket.emit('RecebTemp', temperatura);
});

HTML

<div class="col-xs-9 text-right">
    <div class="huge"><span id="EnviaTemp">0</span> ºC</div>
    <div>Temperatura no Interior da casa</div>
</div>

<script>
    var socket = io();
        socket.on('RecebTemp', function (temperatura) { 
            document.getElementById("EnviaTemp").innerHTML = temperatura;
        });
</script>

就我而言,它仅在我刷新页面时才更新。但我不想刷新整个页面,只刷新那个 DIV,就像屏幕上需要一段时间才能加载的其他元素一样。

会是什么?

【问题讨论】:

  • 前端socket.on中正确接收温度?如果是,请改为 getElementById("EnviaTemp").innerHTML 尝试 getElementById("EnviaTemp").textContent = tempatura
  • 这是因为服务器在连接时只发送了一次变量temperatura
  • @mk12ok 我如何改变这个?
  • 如何更新变量 temperatura ?数据从哪里来,客户端?
  • @mk12ok 来自 Node.js 中的 Post 请求。然后它的帖子将每 5 秒接收一次数据

标签: javascript jquery html websocket socket.io


【解决方案1】:

试试这个:

'use strict';
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const temperatureSender = new MyEmitter();

然后在 app.post 里面:

temperatureSender.emit( 'sendTemp', temperature);

在 io.on('connection',..) 内部:

temperatureSender.on('sendTemp', function(temperature) {
    socket.emit('RecebTemp', temperature);
});

【讨论】:

  • 我写了一个简单的系统,和你的类似,它的工作原理就像一个魅力。让我知道你的情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多