基于 UniApp + WebSocket 的体育比赛实时计分系统开发分享

3 天前
 geekape

最近我开发了一款 微信小程序 —— [赛播记分] ,主要用于篮球等体育比赛的 实时计分 + 直播画面叠加。本文就和大家分享一下它的开发思路和关键实现,希望对做跨端应用、实时通信的同学有所帮助。


🎯 背景与需求

在业余篮球赛、村 BA 、学校班级赛、甚至一些小型直播中,常常会遇到:

所以目标是:

做一个基于微信小程序的工具,能够 实时显示比分,并支持 多设备协同直播画面叠加


🏗️ 技术选型

前端

后端


⚡ 核心功能拆解

1. 实时计分 & 画面叠加

<cover-view class="scoreboard">
  <cover-view class="team">{{ homeTeam }} {{ score.home }}</cover-view>
  <cover-view class="team">{{ awayTeam }} {{ score.away }}</cover-view>
</cover-view>

2. 多设备协同控制

// 客户端发送事件
socket.emit('score:update', { team: 'home', delta: +1 });

// 服务端广播
io.to(roomId).emit('score:sync', newScore);

这样实现“一人直播,多人协同”。


3. 状态管理

统一用 Vuex 管理比赛状态,避免多页面切换时状态丢失。

state: {
  gameSettings: {...},   // 比赛标题、队伍名称
  gameState: {...},      // 当前比分、时间
  cameraState: {...}     // 摄像头状态
}

4. 模板系统

提供 4 种不同风格的比分条:

通过配置项切换,实现 UI 与逻辑解耦


🔧 开发难点与解决

  1. WebSocket 掉线重连

    • 加入心跳检测 + 自动重连逻辑
  2. 性能优化

    • 控制 cover-view 渲染层级,避免掉帧
    • 操作保持 60FPS 流畅
  3. 多端兼容

    • H5 调试环境,最终打包为小程序

🚀 应用场景


📌 总结

这次项目最大的收获是:

未来还计划加入:

如果你需要看成品效果,可以在微信上小程序上搜索 [赛播记分] ,已发布上线。

921 次点击
所在节点    分享创造
1 条回复
qiuai
2 天前
这个不错,追一个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1159077

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX