关于websocket连接意外中断的问题?

我没做过实时通讯相关的业务,没经验。问几个问题,如果连接中断了,只能是客户端负责重链吗? 并且心跳也是客户端做?

问题一:如果服务端正要发送消息给客户端,在发送前断线了,那是不是就发送失败了,等客户端再重新连上时,消息看不见了。怎么办?

问题二:fd与uid的绑定关系应该不需要持久化吧,因为每次重连fd都是变的,那种发送离线消息的,是不是先把客户端A要发的离线消息存储起来,等客户端B上线后,再主动发给它?

问题三:服务端如何感知连接是否已中断?

希望有经验的大牛多多指教!

阅读 3k
1 个回答

1 一般是先存起来在发送,发送失败就失败了,然后重连客户端主动请求读取离线信息,这个是具体业务逻辑了。
2 绑定得看你是单机还是分布式了,单机就存内存就好了,分布式是有redis可以存
3 一般net可以手动打开keep-alive的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进