最近在借一个项目学习socket通讯,场景是客户端隔一段时间向服务器发送消息(可能是1个钟头一条,可能是一秒钟一条,不固定频率),然后服务器返回结果。(原因是只需要提供接口,所以客户端是无法控制的)
原因是服务器需要返回结果,UDP处理起来会复杂很多,所以用了TCP。
另外原因是发送消息的频率不固定,并且每次发送的内容没有关联,所以计划服务器返回结果以后马上断开(这样的话,客户端需要本人处理一下异常)
现在对于这个流程把握不好:服务器返回结果以后马上断开并不是一个很友善的处理方式,但是在这个场景里,客户端是不可控的,又没有办法将断开的时机交给客户端,还有其它更好的处理方法吗?
原因是服务器需要返回结果,UDP处理起来会复杂很多,所以用了TCP。
另外原因是发送消息的频率不固定,并且每次发送的内容没有关联,所以计划服务器返回结果以后马上断开(这样的话,客户端需要本人处理一下异常)
现在对于这个流程把握不好:服务器返回结果以后马上断开并不是一个很友善的处理方式,但是在这个场景里,客户端是不可控的,又没有办法将断开的时机交给客户端,还有其它更好的处理方法吗?
解决方案
30
好吧,socket服务端本身是可以主动断开与某一客户端的连接的,所以主动切断没有问题
15
客户端在收到服务端返回的信息后,向服务端发出确认信息,然后两边断开连接
15
?客户端本人发了本人断就是,干嘛是服务器断?
40
可以长连接加超时方式。
客户端发送完一条消息以后,不立刻断开连接,而是设置一个超时,例如120秒,假如在这个时间内,没有再发送消息,就断开连接。服务器同样逻辑。
这个超时时间可以根据业务逻辑再进行调整,取得一个最优值。
客户端发送完一条消息以后,不立刻断开连接,而是设置一个超时,例如120秒,假如在这个时间内,没有再发送消息,就断开连接。服务器同样逻辑。
这个超时时间可以根据业务逻辑再进行调整,取得一个最优值。