Server Send Event 类似ChatGPT返回消息接收golang版

12次阅读
没有评论

共计 1082 个字符,预计需要花费 3 分钟才能阅读完成。

Client Side:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>服务器发送事件</title>
</head>
<body>
    <h1>获取服务器更新</h1>
    <div id="result"></div>
</body>
<script>
    if (typeof(EventSource) !== "undefined") {
        //创建新的EventSource对象,然后发送更新页面的URL.
        //每接收一次更新,就触发message事件,添加onmessage事件处理程序.
        //最后将接收到的数据输入到页面.event对象的data属性中保存着更新的数据.
        var source = new EventSource("http://127.0.0.1:8080/sse/dashboard");
        source.onmessage = function (event) {
            var result = document.getElementById("result");
            result.innerHTML += event.data + '<br>';
        };
    } else {
        document.getElementById("result").innerHTML = "浏览器不支持";
    }
</script>
</html>

Server Side:

package main

import (
    "fmt"
    "log"
    "net/http"
)

var counter int

func main() {
    http.Handle("/", http.FileServer(http.Dir("client")))
    http.Handle("/sse/dashboard", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/event-stream")
        w.Header().Set("Cache-Control", "no-cache")
        w.Header().Set("Connection", "keep-alive")
        // 需要处理跨域
        w.Header().Set("Access-Control-Allow-Origin", "*")

        fmt.Fprintf(w, "data: %v\n\n", time.Now().Format("2006-01-02 15:04:05"))
    }))
    log.Fatal(http.ListenAndServe(":8080", nil))
}
正文完
 0
Eric chan
版权声明:本站原创文章,由 Eric chan 于2023-09-05发表,共计1082字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。