2016-10-05 6 views
1

私はソケットiを使用しています。POST/EnviaTemperaturaが私のサイトで自動的にアップデートされていないときに送信します。私は何を間違えているのですか?私の場合はソケットI.oは自動的にアップデートされません

の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> 

私は1つのページを更新する場合、それだけで更新しています。しかし、私はページ全体をリフレッシュしたくなかった。画面上にロードするために時間がかかる他の要素があるので、そのDIVだけ。

何ができますか?

+1

温度はフロントエンドのソケットで正しく受信されていますか? textContent = temperatura –

+0

これは、サーバーが接続時に 'temperatura'という変数を一度だけ送信するためです。これは、getElementById(" EnviaTemp ")の代わりにinnerHTML try getElementById(" EnviaTemp " – mk12ok

+0

@ mk12okどうすればこの変更? –

答えて

1

これを試してみてください:

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

をしてからapp.post内側:

temperatureSender.emit('sendTemp', temperature); 

とio.on( '接続'、...)内部:

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

私はこれを使用して戻ってきます。 thx –

+0

私はあなたと同様のシンプルなシステムを書いており、魅力的に機能します。あなたのやり方を教えてください – mk12ok

関連する問題