<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>实时互动 on PlumePHP</title><link>https://plumephp.com/tags/%E5%AE%9E%E6%97%B6%E4%BA%92%E5%8A%A8/</link><description>Recent content in 实时互动 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 20 Oct 2026 21:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/%E5%AE%9E%E6%97%B6%E4%BA%92%E5%8A%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>《互联网产品的客户端架构·内容、社交与实时互动》附录 A 实时通道协议速查</title><link>https://plumephp.com/inet-client-social-appendix-a-realtime-protocols/</link><pubDate>Tue, 20 Oct 2026 21:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-appendix-a-realtime-protocols/</guid><description>把短轮询、长轮询、SSE 与 WebSocket 放在同一张表里逐项对照：通信方向、成本、断线语义、鉴权方式与典型故障。附录给出每种通道的最小实现、Last-Event-ID 与心跳的处理方式，以及一张按产品约束与项目阶段选择通道的判定表。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》8.3 状态展示的降级与隐私边界</title><link>https://plumephp.com/inet-client-social-08-3-presence-privacy/</link><pubDate>Sat, 17 Oct 2026 20:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-08-3-presence-privacy/</guid><description>在线状态一旦涉及隐私，就不再是「显示什么」，而是「允许谁看到什么证据」。本节把可见性、关系、拉黑与连接降级组合成一张展示决策表，明确 unknown 与 offline 的差别，给出可运行实现与测试，并复盘一次隐藏在线后仍能从活跃时间反推的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》8.2 输入中状态的节流与超时</title><link>https://plumephp.com/inet-client-social-08-2-typing-throttle/</link><pubDate>Sat, 17 Oct 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-08-2-typing-throttle/</guid><description>输入中状态不是一次事件，而是一份几秒后自动过期的租约。本节用本地节流、远端超时、会话隔离与停发条件，把「正在输入」压成低频心跳，给出丢包、乱序、进程被杀与幽灵输入四类故障下的可运行实现与假时钟测试，并复盘一次每键发送导致群聊广播风暴、指示器随机闪烁的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》8.1 presence 的近似语义：没有真正的「在线」</title><link>https://plumephp.com/inet-client-social-08-1-presence-approximation/</link><pubDate>Sat, 17 Oct 2026 15:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-08-1-presence-approximation/</guid><description>客户端看到的「在线」不是事实，而是一次带衰减的观测。本节把 presence 拆成最后活跃时间、online/away/offline/unknown 四态与 TTL 过期，给出窗口判定、下一次转换时间与最后活跃文案的纯函数实现，并复盘一次把 socket 连通当成在线、导致用户对着「幽灵在线」发消息的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》7.3 断线期间的消息补拉与空洞检测</title><link>https://plumephp.com/inet-client-social-07-3-gap-detection/</link><pubDate>Sat, 17 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-07-3-gap-detection/</guid><description>重连后只拉最新一条，会让中间的缺口永远补不上。本节用已收序列号维护连续高水位，按批生成补拉区间，把补拉结果与实时推送合并去重，并复盘一次「重连只同步最新消息」导致的历史消息永久丢失，说明补拉报告如何表达未完成状态，以及服务端历史过期后端上必须承认的边界。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》7.2 消息去重与有序：端上能保证什么</title><link>https://plumephp.com/inet-client-social-07-2-dedupe-order/</link><pubDate>Sat, 17 Oct 2026 10:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-07-2-dedupe-order/</guid><description>同一条消息可能因重连补发、重试或多路径到达两次，晚到的消息也可能插到已经读过的位置。本节区分消息 id 与序列号，给出端上的去重集合、乱序缓冲窗口与冲突判定，并用可运行代码证明端上只能保证最终有序，不能保证实时有序，还会说明窗口边界与冲突上报为什么决定了故障是否可观测。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》7.1 重连与退避：把断线当成常态</title><link>https://plumephp.com/inet-client-social-07-1-reconnect-backoff/</link><pubDate>Sat, 17 Oct 2026 09:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-07-1-reconnect-backoff/</guid><description>断线在移动端是常态。本节把重连拆成失败分类、指数退避、抖动与上限四个决策，给出一个可测试的纯函数退避模块，并复盘一次服务端重启后所有客户端同时重连、把网关打满的事故，最后说明网络从离线恢复时为什么要立即重连并清零计数，以及如何用确定随机源验证风暴是否真的被摊开。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》6.3 降级路径：实时不可用时产品还能做什么</title><link>https://plumephp.com/inet-client-social-06-3-realtime-degrade/</link><pubDate>Fri, 16 Oct 2026 20:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-06-3-realtime-degrade/</guid><description>实时通道会断，产品不能跟着白屏。本节把连接状态映射成角标、自动插入、输入中、评论框与在线状态五种能力，给出暂停、手动、排队、禁用四类降级模式与恢复顺序，让页面在弱网下仍能读缓存、写草稿、手动刷新；队列只接受可幂等重放的写操作，并复盘一次整页空白事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》6.2 一条实时连接的生命周期</title><link>https://plumephp.com/inet-client-social-06-2-connection-lifecycle/</link><pubDate>Fri, 16 Oct 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-06-2-connection-lifecycle/</guid><description>连接不是一个 connected 布尔值，而是 idle、connecting、open、reconnecting、closed、failed 之间的迁移。本节用可测试的状态机定义合法迁移、后退钩子、页面切后台与恢复、卸载清理，并复盘旧连接回调把新连接误标为 open 的事故。</description></item><item><title>《互联网产品的客户端架构·内容、社交与实时互动》6.1 轮询、SSE 与 WebSocket 的判定表</title><link>https://plumephp.com/inet-client-social-06-1-realtime-choice/</link><pubDate>Fri, 16 Oct 2026 15:30:00 +0800</pubDate><guid>https://plumephp.com/inet-client-social-06-1-realtime-choice/</guid><description>实时选型常被简化成「聊天就上 WebSocket」，但真实约束远不止消息方向。本节把延迟、在线规模、运维能力、二进制与上行频率写成结构化输入，用可测试的打分函数输出推荐、置信度与警告，说明同一份需求为什么允许有两个合理答案，并给出四组场景的分数对照与一次选型回滚复盘。</description></item></channel></rss>