悟空聊架构
2025-06-25
来自广东
对思考题的一些想法,不知道对不对。 第一题思路: 在发生异常的地方进行切换、重连或降级。如下: - except anyio.ClosedResourceError: 客户端断开连接异常 - except Exception as e: 任意异常,判断是否为网络层错误 - anyio.fail_after(timeout): 请求超时(RTT 过长) 切回 WebSocket 机制:定期探测 WebSocket 是否恢复,尝试切回 WebSocket。可以使用后台协程定期 ping WebSocket 地址来判断WebSocket 是否恢复。 第二题思路: 核心能力: - 消息的异步收发消息,支持双向流。 - 流的生命周期管理:能够正确打开、关闭、异常处理流。 - 与 BaseSession 的解耦:只需提供收、发消息流的接口。 接口: - connect() 连接 - disconnect() 断开连接 - read() - write() 与 BaseSession 集成,需要提供两个关键的流对象 read_stream、write_stream