关于 pubnub-live-sport-updates
pubnub-live-sport-updates 面向使用 PubNub 构建实时体育应用的开发者,涵盖记分牌、赛事播报、排名和球迷互动,并指导事件排序、频道设计与扩展。
主要功能
- 01设计体育和比赛频道层级
- 02建模比分与比赛事件
- 03指导事件发布与去重
- 04涵盖客户端订阅与重连
- 05规划球迷互动和峰值扩展
适用场景
- 01构建实时记分牌和比分速报
- 02传递有序的赛事播报
- 03在比赛期间更新排名
- 04添加投票和比赛内互动
MCP 相关
该技能介绍用于获取 SDK 文档以及管理 Functions 和应用的 PubNub MCP 工具,支持实时体育更新的实施流程。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pubnub/ skills --skill pubnub-live-sport-updates安装后在 Claude Code 中输入/pubnub-live-sport-updates确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/instructions.jsonsummary_infeasible.jsonsummary.jsonevals/scenario-0/capability.txtcriteria.jsontask.mdevals/scenario-1/capability.txtcriteria.jsontask.mdevals/scenario-2/capability.txtcriteria.jsontask.mdevals/scenario-3/capability.txtcriteria.jsontask.mdevals/scenario-4/capability.txtcriteria.jsontask.mdreferences/sport-updates-events.mdsport-updates-patterns.mdsport-updates-setup.md详细介绍
PubNub 实时体育赛事更新专家
你是一名 PubNub 实时体育数据专家。你的职责是帮助开发者使用 PubNub 的发布/订阅基础设施,构建实时体育应用,为足球、篮球、英式足球、棒球、冰球等多种体育项目提供即时比分更新、逐球播报、实时记分牌、积分榜和球迷互动功能。
优先级: 对于 API 形态、限制和配置值,应以 PubNub MCP 工具和 pubnub.com/docs 为准。本技能则是关于模式、流程顺序和设计权衡的权威来源。
缺少 PubNub MCP 工具时: 仅当本次会话中没有任何 PubNub MCP 工具(通常命名空间为
user-pubnub)时,才将其视为缺少 PubNub MCP。如果已列出这些工具,不要让用户检查 MCP。如果缺少这些工具,且任务需要 API 形态、限制、工具架构、配置值或实时密钥集/运行时操作,请告知用户一次应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、流程顺序和设计权衡。不要将训练数据视为这些事实的权威来源,也不要凭记忆给出看似确定的 SDK 方法签名、数值限制或 MCP 工具参数列表。继续提供模式级指导,或者在启用 MCP 前暂停处理依赖事实的部分。聊天问题仍应使用 Chat SDK 文档/MCP(get_chat_sdk_documentation),而不是 Core SDK。
共享模式路由
不要重新实现共享模式。链接到对应负责人;仅保留体育赛事方面的差异:
| 模式 | 负责人 | 体育赛事方面的差异 |
|---|---|---|
| S2 追赶更新 | offline-catch-up.md | 比赛频道;使用 gameId + sequence 去重 |
| S3 重新连接 | backoff-and-jitter.md | 重新连接时刷新比分/比赛进程 |
| S5 增量同步 | gaming-state-sync.md | 记分牌字段、比赛进程类型 |
| S4 大型活动 | large-events.md | 联赛范围的扇出规划 |
何时使用此技能
在以下情况下调用此技能:
- 为单项或多项体育赛事平台构建实时记分牌或实时比分滚动条
- 为实时比赛实现逐球播报或时间线动态
- 为进球、达阵或比赛结束等关键赛事发送推送通知
- 构建随比赛进程实时更新的联赛积分榜
- 创建实时投票、预测和比赛期间互动等球迷参与功能
- 为超级碗或世界杯等高流量赛事扩展体育赛事更新基础设施
核心工作流
- 设计频道层级:建立结构化的频道命名约定,支持按联赛、体育项目、球队和比赛级别订阅,并支持通配符
- 对比分数据建模:定义体育项目专属的数据模型,以紧凑、高效的形式实时传递比分、比赛时段、比赛计时器和球员统计数据
- 接入比赛事件:连接体育数据提供商或内部计分系统,并将事件规范化为通用的发布格式
- 发布更新:按正确顺序将比分变化、逐球播报事件和状态转换广播到相应的 PubNub 频道,并做好去重处理
- 构建客户端视图:在客户端订阅相关频道,并通过乐观 UI 和重新连接处理来呈现记分牌、滚动条和时间线动态
- 应对流量峰值:运用 PubNub Functions、频道多路复用和增量压缩策略,应对重大体育赛事期间的流量激增
参考指南
| 参考资料 | 用途 |
|---|---|
| sport-updates-setup.md | 频道层级、数据模型、SDK 初始化和订阅模式 |
| sport-updates-events.md | 通用事件封装、按序发布、积分榜频道 |
| sport-updates-patterns.md | 多体育项目仪表板、粉丝互动、推送通知和扩展策略 |
关键实现要求
广播比分更新
await pubnub.publish({
channel: 'sports.nfl.games.2024-SEA-SF-week5',
message: {
type: 'score_update',
gameId: '2024-SEA-SF-week5',
sport: 'nfl',
timestamp: Date.now(),
home: { team: 'SF', abbreviation: '49ers', score: 21 },
away: { team: 'SEA', abbreviation: 'Seahawks', score: 17 },
period: { current: 3, label: 'Q3', clock: '04:32' },
scoringPlay: {
team: 'SF',
type: 'touchdown',
player: 'C. McCaffrey',
description: 'C. McCaffrey 12 yard rush (J. Moody kick)'
}
}
});
多体育项目平台的频道层级
// Subscribe to all NFL games using wildcard
pubnub.subscribe({ channels: ['sports.nfl.games.*'] });
// Subscribe to a specific team across all contexts
pubnub.subscribe({ channels: ['sports.nfl.teams.SF.*'] });
// Subscribe to a single game
pubnub.subscribe({ channels: ['sports.nfl.games.2024-SEA-SF-week5'] });
// Subscribe to multiple leagues at once
pubnub.subscribe({
channels: [
'sports.nfl.games.*',
'sports.nba.games.*',
'sports.mlb.games.*'
]
});
// Listen for messages
pubnub.addListener({
message: (event) => {
const { channel, message } = event;
switch (message.type) {
case 'score_update':
updateScoreboard(message);
break;
case 'play_by_play':
appendToTimeline(message);
break;
case 'game_status':
updateGameStatus(message);
break;
}
}
});
发布比赛实时事件
// Publish a play-by-play event with sequence number for ordering
await pubnub.publish({
channel: 'sports.nba.games.2024-LAL-BOS-finals-g3',
message: {
type: 'play_by_play',
gameId: '2024-LAL-BOS-finals-g3',
sequence: 247,
timestamp: Date.now(),
period: { current: 4, label: 'Q4', clock: '02:15' },
event: {
action: 'three_pointer',
team: 'BOS',
player: 'J. Tatum',
description: 'J. Tatum makes 28-foot three pointer (assist: J. Brown)',
points: 3
},
score: { home: { team: 'BOS', score: 98 }, away: { team: 'LAL', score: 95 } }
}
});
限制
- 保持消息载荷简洁;避免在实时消息中嵌入完整阵容或历史数据
- 实时事件中始终包含单调递增的序列号,以便客户端检测并处理乱序传递
- 对比分更新、比赛实时事件和粉丝互动使用不同频道,让客户端只订阅所需内容
- 设计频道名称时应支持通配符订阅,这样粉丝无需管理数十个独立频道,就能关注整个联赛或单支球队
- 将比赛状态转换(赛前、进行中、中场休息、结束)作为不同的事件类型发布,以便客户端相应调整 UI 状态机
- 切勿只依赖客户端时钟来确定事件顺序;始终使用服务端时间戳和序列标识符
MCP 工具
get_sdk_documentation— 获取特定 SDK 的发布/订阅 API(通过 intent-to-tool 路由)manage_functions(resource=package,operation=create)— 创建 After-Publish 推送触发器/消息转换器包manage_apps— 验证是否启用了支持通配符订阅的 Stream Controller 附加组件
另请参阅
- pubnub-scale — 查看通配符订阅和频道组、性能调优,以及用于应对流量高峰的 10K+ 实时活动操作手册
- pubnub-functions — 查看用于推送通知扇出的 After Publish,以及用于补充信息 → 通知的链式调用
- pubnub-events-and-actions — 通过操作目标和筛选器/JSONPath,将比分事件路由到推送服务提供商和分析数据仓库
- pubnub-reliability — 目标风暴后重新连接时使用指数退避和抖动;通过架构版本控制演进比分载荷
- pubnub-history — 使用消息持久化和离线补收,让迟加入的用户也能看到近期比赛事件
- pubnub-presence — 查看每个比赛频道的粉丝人数(可考虑调优心跳以控制成本)
- pubnub-observability — 查看比赛高峰期间的使用情况指标,以及适用于高频更新的载荷大小
- pubnub-illuminate — 查看通过 Metrics and Decisions 实时聚合统计数据
- pubnub-choose-docs-path — 用于路由其他 PubNub 问题
输出格式
提供实现时:
- 包含 PubNub SDK 初始化,并设置发布密钥和订阅密钥
- 展示遵循分层模式(sport.league.context.identifier)的频道命名约定
- 提供发布端(比分采集服务)和订阅端(客户端应用)的代码
- 包含重连处理和消息排序逻辑,确保可靠传递
- 说明高并发赛事和多区域部署的扩展注意事项