无论如何在golang / gin中关闭客户端请求?

时间:2015-09-09 04:12:27

标签: go go-gin

使用gin框架。

无论如何通知客户端关闭请求连接,那么服务器处理程序可以做任何后台作业而不让客户端等待连接吗?

func Test(c *gin.Context) {
        c.String(200, "ok")
        // close client request, then do some jobs, for example sync data with remote server.
        //
}

1 个答案:

答案 0 :(得分:3)

是的,你可以这样做。只需从处理程序返回即可。你想做的背景工作,你应该把它放在一个新的goroutine上。

请注意,连接和/或请求可能会被放回池中,但这是无关紧要的,客户端将看到服务请求已结束。你实现了你想要的目标。

这样的事情:

func Test(c *gin.Context) {
    c.String(200, "ok")
    // By returning from this function, response will be sent to the client
    // and the connection to the client will be closed

    // Started goroutine will live on, of course:
    go func() {
       // This function will continue to execute... 
    }()
}

另见:Goroutine execution inside an http handler