超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

实时通信模型与协议基础

WebSocket、消息队列与实时通信#Python全栈#第十六阶段#WebSocket、消息队列与实时通信#实时通信模型与协议基础约 1512 字 · 4 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

本阶段学习说明

整体培养方向: Python 全栈开发就业,按北京 10~20k 岗位所需能力逐步推进。
本阶段定位: 在异步接口、数据库与任务队列基础上,实现实时通知、课堂讨论和状态同步,理解消息从产生到业务完成的完整路径。
适用环境: Python 3、FastAPI/ASGI、浏览器原生 WebSocket 与 EventSource、RabbitMQ;Redis Pub/Sub、Streams 和 Kafka 用于比较与进阶练习。注明实际服务端、客户端及队列类型,不将某个版本的默认配置当作普遍保证。
考查目标: 能完成连接鉴权、订阅与广播,设计消息标识、确认、断线恢复和重复处理,并定位跨进程、慢连接与消费积压问题。

题库结构: 100 道题,每题包含追问;从通信模型与连接生命周期,推进到消息路由、可靠消费、多实例协作和实操。本阶段提供题目,不包含参考答案;不重复上一阶段的缓存失效、Celery 调度和任务编排,不要求手写 WebSocket 协议解析器或掌握消息中间件全部内部实现。

答题约定: 先说明业务是否允许丢失、重复、延迟及乱序,再选择通信方案。涉及 WebSocket 握手时,默认讨论 HTTP/1.1 经典升级流程;涉及“成功”时,明确指发布确认、消费确认、数据库提交还是客户端应用完成。课堂主线为 WebSocket 与 RabbitMQ,其他组件按项目需要选学。

普通轮询、长轮询、SSE 与 WebSocket 分别怎样传递实时数据?

追问 课堂公告、报告生成进度和双向讨论分别适合什么方案?怎样比较延迟、请求数量、连接成本与实现复杂度?

HTTP 请求响应与 WebSocket 长连接的交互方式有什么区别?

追问 建立连接后是否仍然需要为每条业务消息约定类型和响应?为什么连接保持打开不代表用户持续收到有效数据?

HTTP/1.1 经典 WebSocket 握手经历哪些步骤?

追问 Upgrade、Connection、Sec-WebSocket-Key 和 101 响应各承担什么作用?为什么 Key 不能替代用户鉴权,为什么不能把该流程套用到所有 HTTP 版本?

ws 与 wss 有什么区别,HTTPS 页面应怎样连接实时服务?

追问 证书、页面来源和代理终止 TLS 会影响哪些环节?怎样区分连接地址错误、混合内容限制和后端握手失败?

WebSocket 的消息、帧、文本数据和二进制数据如何区分?

追问 业务通常应操作完整消息还是自行处理底层帧?一次业务消息是否必然对应一个 TCP 数据包,分片后应在哪里重组?

WebSocket Ping/Pong 与业务层心跳有什么区别?

追问 浏览器原生 WebSocket API 是否直接暴露发送 Ping 控制帧的方法?连接存活与业务订阅仍然有效怎样分别判断?

SSE 的数据格式和浏览器 EventSource 怎样配合?

追问 text/event-stream、data、event、id 与空行如何使用?多行内容怎样组织,为什么发送后未及时刷新可能看起来没有推送?

SSE 自动重连与 Last-Event-ID 能解决什么,仍然缺少什么?

追问 服务端怎样保留和查找历史事件?事件已超出保留期或游标属于其他用户时怎样处理,为什么重连本身不能保证补齐?

TCP 的有序传输为什么不能独自保证业务消息永不丢失或重复?

追问 服务器处理后连接中断、客户端未确认便重发时会怎样?同一连接的传输顺序与多个处理协程的完成顺序有什么区别?

如何为一个实时功能写出可验证的需求,而不是只说“实时推送”?

追问 需要定义哪些延迟目标、在线与离线行为、历史保留、顺序范围和故障降级?怎样判断普通查询接口已经足够?

协议核对资料: RFC 6455:WebSocket 协议、HTML 标准:Server-sent events。