-
Notifications
You must be signed in to change notification settings - Fork 251
Open
Description
情景:当客户端未主动关闭连接的情况下,若主动停止服务端(Ctrl+C),服务端HTTP Server会被长连接Block,无法正常退出。不便于开发调试。
解决办法:
- 在Close()内先检查客户端连接情况,对保持的连接进行关闭,并重置客户端计数。
- 同时,增加http server Stop()函数中,Shutdown上下文超时时间,默认3秒,来不及释放长连接,可改成5秒。
h.clients.Range(func(uidKey, cliVal interface{}) bool {
cli := cliVal.(*UserClient)
if h.clients.Has(cli.UID) {
h.clients.Delete(cli.UID)
close(cli.Send)
h.zapLogger.Info("[sse] server disconnected", zap.String("uid", cli.UID))
}
fmt.Printf("closing clients now %v %v\n", h.OnlineClientsNum(), cli.UID)
return true
})
h.cancel()
h.asyncTaskPool.Wait()
h.asyncTaskPool.Stop()
Metadata
Metadata
Assignees
Labels
No labels