2015-10-30 156 views
1

我基於本教程實時創建圖表。 http://www.highcharts.com/docs/working-with-data/live-dataaddPoint with HIGHCHARTS(xAxis dateTime)

然後我用的NodeJS和插座的工作我修改了代碼,但突然的圖形不更新.. 下面的代碼:

代碼客戶端:

var chart; 
var series = Array(); 
socket.on('ping', function(data){ 
    console.log(data); 
     socket.emit('pong', {beat: 1}) 
    //console.log(i); 
requestData(data);  

    }); 
     function requestData(point) { 
     if(point !== null){ 


        //console.log('if'+point); 
        var series = chart.series[0], 
         shift = series.data.length > 60; // shift if the series is longer than 20 
        //alert(point); 
        chart.series[0].addPoint(point, true, shift); 

        //setTimeout(requestData, 5000);  
     } 
} 

     $(document).ready(function() { 
      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container', 
        defaultSeriesType: 'spline', 
          zoomType: 'x', 
        backgroundColor: "#333333" 
       }, 
         load: function(){ 
        chart = this; 
        requestData(); 
       }, 
       title: { 
        text: 'Bitcoin price' 
       }, 
       xAxis: { 
        type: 'datetime', 
        tickPixelInterval: 150, 
        maxZoom: 20 * 1000 
       }, 
       yAxis: { 
        minPadding: 0.2, 
        maxPadding: 0.2, 
        title: { 
         text: 'Value', 
         margin: 80 
        } 
       }, 
       series: [{ 
        name: 'Bitcoin Price (Spot)', 
        data: [] 
       }] 
      });  
     }); 

代碼服務器:

var amount; 
var dateN; 
function updateChart(){ 
    setTimeout(updateChart, 5000); 
    dateN =(Math.floor(new Date().getTime() /1000)*1000); // equal to time() in php 
    client.getSpotPrice({'currency': 'USD'}, function(err, obj) { 
     amount = obj.data.amount; 
     }); 
    var info = [dateN,amount+phpjs.rand(01,99)]; 
    var pointd = JSON.stringify(info); 
    console.log(pointd); 
    //console.log(amount); 
    pointd = phpjs.str_replace('"','',pointd); 
    io.sockets.emit('ping', pointd); 
} 

io.sockets.on('connection', function (socket) { 
    socket.on('pong', function(data){ 
     console.log("Pong received from client"); 
    }); 
}); 

當我看日誌控制檯時,例如,我很好地[1446218389000,323.3578]。 準確地說,我在PHP中使用腳本在基礎上收到的。

但不更新圖表。 如果您有想法?

謝謝:)

回答

2

移取布爾值,你的情況的條件

shift = series.data.length > 60; 

返回false,因爲你可能會得到點數據,有可能不> 60。所以改用

chart.series[0].addPoint(point, true, true); //true in place of shift. 
+0

謝謝你的答案,但我解決我的問題,否則政變.. 我的腳本app.js我把數據庫所需的值和客戶端AJAX我提出的要求到由socket.io命令檢索值的服務器。 – demenvil