gpt4 book ai didi

golang : client tls. Conn 关闭钩子(Hook)

转载 作者:IT王子 更新时间:2023-10-29 02:02:36 26 4
gpt4 key购买 nike

我正在与接受 *tls.Conn 的 http 客户端 API 进行交互.我无法更改 API。我希望在连接关闭时执行一些代码,但我没有找到执行此操作的方法。如果我创建一个嵌入 *tls.Conn 的结构并且我“覆盖”Close(),API 将不会接受该结构,因为 go 仅遵循子- type is-a relationship with interfaces - tls.Conn 不是接口(interface)。

有什么方法可以解决这个问题 - 是否有一些标准的钩子(Hook)可以用来在客户端连接关闭时收到通知?

最佳答案

如果您使用 tls.Client构建 *tls.Conn 然后你可以包装第一个参数来实现你的目标。

type CloseListener struct {
net.Conn // embed the original conn
}

func (c *CloseListener) Close() error {
err := c.Conn.Close()
// ... do your stuff ...
return err
}

conn := tls.Client(&CloseListener{c}, &tls.Config{ /* ... */ })

如果你看看如何tls.Conn's Close已实现,您会看到它应该调用您的 Close 实现,除非出现错误。

关于golang : client tls. Conn 关闭钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47113540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com