我没做过实时通讯相关的业务,没经验。问几个问题,如果连接中断了,只能是客户端负责重链吗? 并且心跳也是客户端做?
问题一:如果服务端正要发送消息给客户端,在发送前断线了,那是不是就发送失败了,等客户端再重新连上时,消息看不见了。怎么办?
问题二:fd与uid的绑定关系应该不需要持久化吧,因为每次重连fd都是变的,那种发送离线消息的,是不是先把客户端A要发的离线消息存储起来,等客户端B上线后,再主动发给它?
问题三:服务端如何感知连接是否已中断?
希望有经验的大牛多多指教!
我没做过实时通讯相关的业务,没经验。问几个问题,如果连接中断了,只能是客户端负责重链吗? 并且心跳也是客户端做?
问题一:如果服务端正要发送消息给客户端,在发送前断线了,那是不是就发送失败了,等客户端再重新连上时,消息看不见了。怎么办?
问题二:fd与uid的绑定关系应该不需要持久化吧,因为每次重连fd都是变的,那种发送离线消息的,是不是先把客户端A要发的离线消息存储起来,等客户端B上线后,再主动发给它?
问题三:服务端如何感知连接是否已中断?
希望有经验的大牛多多指教!
2 回答2.2k 阅读
1 回答478 阅读✓ 已解决
1 回答599 阅读
323 阅读
1 一般是先存起来在发送,发送失败就失败了,然后重连客户端主动请求读取离线信息,这个是具体业务逻辑了。
2 绑定得看你是单机还是分布式了,单机就存内存就好了,分布式是有redis可以存
3 一般net可以手动打开keep-alive的