首页 > 其他分享 >Go gin框架使用 SSEVENT

Go gin框架使用 SSEVENT

时间:2024-01-17 15:14:09浏览次数:24  
标签:function console log SSEVENT value eventSource Go gin

我知道的是, 是一个 http长连接, 有着类websocket的api;

后端示例代码:

package main

import (
	"fmt"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()

	r.GET("/events", func(c *gin.Context) { c.Header("Content-Type", "text/event-stream") c.Header("Cache-Control", "no-cache") c.Header("Connection", "keep-alive") for i := 0; i < 5; i++ { c.SSEvent("message", "This is a message") time.Sleep(2 * time.Second) } })

	router.Run(":8080")
}

前端使用 ssevent有着类似于 ws的api;
前端示例代码:


const memdumpFun = (loading) => {
    // new 他
    let eventSource = new EventSource(
        "http://127.0.0.1:8080/memdump/",
        {
            withCredentials: true,
        }
    );
    eventSource.onopen = function (e) {
        console.log("sse打开");
    };
    // progress、speed、timeout.... 是后端定的
    eventSource.addEventListener("progress", function (e) {
        console.log(e.data);
        s.value = e.data;
    });
    eventSource.addEventListener("speed", function (e) {
        console.log(e.data);
        speed.value = e.data;
    });
    eventSource.addEventListener("timeout", function (e) {
        console.log(e.data);
        over("sse超时");
        ElMessage({
            type: "warning",
            message: "读取超时",
        });
    });
    eventSource.addEventListener("error", function (e) {
        console.log(e);
        over("sse失败");
        ElMessage({
            type: "error",
            message: "读取失败",
        });
    });
    eventSource.addEventListener("ok", function (e) {
        console.log(e.data);
        over("sse成功");
        ElMessage({
            type: "success",
            message: "读取成功",
        });
    });
    eventRef.value = eventSource;
    const over = (t) => {
        loading.close();
        eventSource.close();
        console.log(t);
        showTime.value = false;
        s.value = 0;
        clearInterval(st.value);
    };
};

标签:function,console,log,SSEVENT,value,eventSource,Go,gin
From: https://www.cnblogs.com/runninginsilence/p/17970037

相关文章

  • [AGC010E] Rearranging
    Thereare$N$integerswrittenonablackboard.The$i$-thintegeris$A_i$.TakahashiandAokiwillarrangetheseintegersinarow,asfollows:First,Takahashiwillarrangetheintegersashewishes.Then,Aokiwillrepeatedlyswaptwoadjacentintege......
  • 使用Go语言编写HTTP代理服务器
    在Go语言中,编写一个HTTP代理服务器相对简单且直观。代理服务器的主要职责是接收客户端的请求,然后将请求转发到目标服务器,再将目标服务器的响应返回给客户端。下面是一个简单的示例,展示如何使用Go语言编写一个基本的HTTP代理服务器:go复制代码package mainimport ("io" "log" "......
  • Mygin实现上下文
    本篇是Mygin的第三篇目的将路由独立出来,方便后续扩展修改上下文Context,对http.ResponseWriter和http.Request进行封装,实现对JSON、HTML等的支持路由新建一个router文件,将Mygin实现简单的路由中将路由部分复制出来新建Mygin/router.gopackagemyginimport( "log"......
  • Django如何开发网页
    Django作为一款广泛应用于Web开发的框架,其在实际项目中的表现至关重要。掌握Django的开发技巧和最佳实践,不仅可以提高开发者的编程水平,还可以为企业节省开发成本,提高项目竞争力。此外,Django框架在我国的应用也日益广泛,对我国互联网产业的发展产生了积极推动作用。因此,对Django进行......
  • Gin路由分组
    Gin路由分组1假设我们需要开发的接口有这些packagemainimport( "net/http" "github.com/gin-gonic/gin")funcmain(){ r:=gin.Default() r.GET("/",func(c*gin.Context){ c.String(200,"首页") }) r.GET("/news",f......
  • Gin GET POST 以及获取GET POST传值
    GinGETPOST以及获取GETPOST传值1Get请求传值packagemainimport( "net/http" "github.com/gin-gonic/gin")funcmain(){ r:=gin.Default() //http://127.0.0.1:8000/query?username=111&age=10&sex= //{"age":"10&......
  • Gin 控制器的继承,自定义方法
    Gin控制器的继承,自定义方法1我们想直接获取到int类型的数据怎么办/* 当我们获取Get参数时都时获取到的都是string类型,有时候我们想直接获取到int类型,我们就需要转换,如果需要转换的地方多了也会很麻烦, 那我们可以怎么办 解决办法很简单,我们可以写一个baseController来实......
  • Gin控制器分离
    Gin控制器分离1函数式/* apiRouters.GET("/",func(c*gin.Context){ c.String(200,"我是一个api接口") }) 这样的一个路由注册我们发现,后面都跟了一个匿名函数,那我们将这个匿名函数全部取出来放在一个固定的地方就可以实现路由和业务逻辑的分离了*/1.1将adminRou......
  • Gin单文件上传以及多文件上传
    Gin单文件上传以及多文件上传1单文件上传funcmain(){router:=gin.Default()//为multipartforms设置较低的内存限制(默认是32MiB)//router.MaxMultipartMemory=8<<20//8MiBrouter.POST("/upload",func(c*gin.Context){file......
  • Gin中间件
    Gin中间件1中间件简介/* Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。*/在gin中的Default的方法中已经有两个中间件了://Defaul......