最近我开发了一款 微信小程序 —— [赛播记分] ,主要用于篮球等体育比赛的 实时计分 + 直播画面叠加。本文就和大家分享一下它的开发思路和关键实现,希望对做跨端应用、实时通信的同学有所帮助。
在业余篮球赛、村 BA 、学校班级赛、甚至一些小型直播中,常常会遇到:
所以目标是:
做一个基于微信小程序的工具,能够 实时显示比分,并支持 多设备协同 和 直播画面叠加。
camera
组件获取摄像头画面cover-view
组件在画面上叠加比分条<cover-view class="scoreboard">
<cover-view class="team">{{ homeTeam }} {{ score.home }}</cover-view>
<cover-view class="team">{{ awayTeam }} {{ score.away }}</cover-view>
</cover-view>
// 客户端发送事件
socket.emit('score:update', { team: 'home', delta: +1 });
// 服务端广播
io.to(roomId).emit('score:sync', newScore);
这样实现“一人直播,多人协同”。
统一用 Vuex 管理比赛状态,避免多页面切换时状态丢失。
state: {
gameSettings: {...}, // 比赛标题、队伍名称
gameState: {...}, // 当前比分、时间
cameraState: {...} // 摄像头状态
}
提供 4 种不同风格的比分条:
通过配置项切换,实现 UI 与逻辑解耦。
WebSocket 掉线重连
性能优化
cover-view
渲染层级,避免掉帧多端兼容
这次项目最大的收获是:
未来还计划加入:
如果你需要看成品效果,可以在微信上小程序上搜索 [赛播记分] ,已发布上线。