gpt4 book ai didi

go - 服务器或客户端如何知道连接是否断开?

转载 作者:行者123 更新时间:2023-12-01 20:24:13 25 4
gpt4 key购买 nike

我不知道grpc streaming的内部工作。我有一个场景,其中有服务器端流,并且如果我从网络中删除客户端(通过拉出网络电缆,可以说),则不会出现任何错误,也不会出现客户端或服务器端的错误。

有人可以帮忙吗?

如果我杀死服务器,客户端就会知道。如果我杀死客户端,服务器就会知道。但是并没有发现断开连接。

我有兴趣知道为什么它不起作用以及在服务器或客户端被杀死的情况下它如何起作用。是否发送了一些heartbeat消息以检查连接性或如何完成连接?我的意思是,如果我每30秒发送一次数据,它如何工作?

最佳答案

如果中间网络路径暂时消失,则Internet将无法工作。
空闲的网络连接应该能够容忍临时的网络路径消失。

当双方断开连接时,看到服务器/客户端连接中断的原因是由于主动断开了与应用层(网络层7)之间的连接。
断开物理电缆,仅切断physical network layer,其效果不一定会向上级联,尤其是在空闲连接的情况下。

如果您的应用程序规范坚持一定程度的“ liveness ”(每30秒说一次事件,甚至是心跳),则可以确保服务器始终向gRPC流发送甚至NOP(心跳)。在这种情况下,服务器将在30秒内经历网络中断(甚至更糟)。

同样,如果您担心客户端可能正在等待无法再建立的连接,则如果记录(甚至是脉动信号)没有异常,则可以在客户端使用计时器循环的go-routine来取消连接上下文。在最近30秒内收到。

关于go - 服务器或客户端如何知道连接是否断开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59876968/

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