2016-10-05 4 views
1

Ich benutze den Sockel ith und wenn ich einen POST/EnviaTemperatura sende wird nicht automatisch auf meiner Website aktualisiert. Was mache ich falsch?Sockel I.o wird nicht automatisch aktualisiert

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> 

In meinem Fall ist die Aktualisierung nur, wenn ich derjenige, der die Seite aktualisieren. Aber ich wollte nicht die gesamte Seite aktualisieren, nur das DIV, wie andere Elemente auf dem Bildschirm, die eine Weile brauchen, um zu laden.

Was könnte es sein?

+1

Die Temperatur wird im Frontend korrekt empfangen. Wenn ja, getElementById ("EnviaTemp"). InnerHTML try getElementById ("EnviaTemp"). TextContent = temperatura –

+0

Das liegt daran, dass der Server die Variable 'temperatura' nur einmal bei der Verbindung sendet. – mk12ok

+0

@ mk12ok Wie ändere ich das? –

Antwort

1

Versuchen Sie folgendes:

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

und dann innerhalb des app.post:

temperatureSender.emit('sendTemp', temperature); 

und innerhalb des io.on ('Verbindung', ..):

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

ich werde dies und zurück verwenden. thx –

+0

Ich schrieb ein einfaches System, ähnlich wie Ihres, und es funktioniert wie ein Zauber. Lass mich wissen, wie es dir geht – mk12ok

Verwandte Themen