Golang:自动刷新HTTP页面

时间:2014-07-03 17:41:25

标签: go

我使用Go编程语言执行HTTP页面。 GO中的函数如下所示:

func main(){
    ...
    http.HandleFunc("/Page", func(w http.ResponseWriter, r *http.Request) {
        t:=template.New("New template")
        child_template := t.New("New child template")
        _, _ = child_template.Parse(output)  // output is from the omitted code
        t, err = t.ParseFiles("HTML_template.html")
        _ = t.ExecuteTemplate(w, "HTML_template.html", output)
    }
}

如何自行刷新/页面?我尝试了以下方法,但它不起作用。

func main(){
    ...
    http.HandleFunc("/Page", func(w http.ResponseWriter, r *http.Request) {
        for{
            t:=template.New("New template")
            child_template := t.New("New child template")
            _, _ = child_template.Parse(output)  // output is from the omitted code
            t, err = t.ParseFiles("HTML_template.html")
            _ = t.ExecuteTemplate(w, "HTML_template.html", output)

            time.Sleep(time.Millisecond*100)
        }
    }
}

我正在尝试创建一个动态图表,用于绘制每秒传入数据的数量。如果我继续刷新浏览器,轴也会重新加载,看起来很难看。 HTML_template.html看起来像这样

<script type = "text/javascript">
    function plot(){
        ...
        var data = [{{template "New child template"}}];
        ...
    }
    setInterval(func(){plot()},500);
</script>

3 个答案:

答案 0 :(得分:1)

你的方式错误,你应该使用Websockets Gorillago.net或者至少使用ajax,但重新加载整个页面的效率非常低。 / p>

答案 1 :(得分:1)

只需添加refresh元标记,即可在没有Go,JavaScript,AJAX,SSE或Websockets的情况下完成此操作。添加

<meta http-equiv="refresh" content="3" />

进入您的网页<head>会使其每隔3秒刷新一次。

答案 2 :(得分:0)

你真的真的需要使用websockets来做这件事,但是有一种快速而肮脏的方法。

在页面中添加一点jquery:

if (window.location.href.indexOf('reload')==-1) {
     window.location.replace(window.location.href+'?reload');
}

但你真的需要使用websockets。