trzsz/tsshd

进程被杀死时通知客户端关闭连接

Closed this issue · 7 comments

目前的 tsshd 好像没有这方面的设计。

如果执行 pkill tsshd(给进程发送终止信号)或 reboot(重启系统),客户端那边就直接卡死了。经过连续几分钟的心跳包超时后,客户端才主动关闭连接。

这个机制不一定能 100% 保证客户端收到断开连接的消息,但我想还有必要这么做,能提高体验。

现在是有这个功能的,默认 tsshd 被 kill 了之后,客户端会在 100 秒左右自动退出。可通过配置 UdpAliveTimeout 进行调整:

Host test
    #!! UdpAliveTimeout 50  # 单位是秒

我的意思是在服务端被终止时,客户端立即的主动退出。你这个设置貌似也会影响超时重连吧,如果调小一点才退出还是很显得奇怪要卡死几十秒,设置太小例如几秒那网络不稳定时又可能被退出。

如果说某些信号让客户端及早退出,应该是可以做到的。如果说是 kill -9 那是没机会的。

是的 所以你打算实现这个吗

我周末实现一下。

这部分我已经实现了 近期我可能就会开 pr 不过我对 Go 语言不太熟悉 你可能要 rebase 一下

不知你是如何做的,按理说几行代码就可以了。