2015-09-09 130 views
2

使用gin框架。有沒有辦法在golang/gin中關閉客戶端請求?

有沒有辦法通知客戶端關閉請求連接,然後服務器處理程序可以做任何後臺作業,而不讓客戶端等待連接?

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

回答

4

是的,你可以做到這一點。通過簡單地從處理程序返回。而你想做的背景工作,你應該把它放在一個新的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

相關問題