当前位置: 首页 > wzjs >正文

网站环境配置北京网站备案域名

网站环境配置,北京网站备案域名,清苑区建设网站找那家公司,荣耀手机商城官方网站登录入口要实现的是 “历史弹幕 实时弹幕” 混合的完整弹幕系统,类似 B 站的做法。 我们来一步步设计并实现它👇✅ 场景目标 你的视频播放器要支持:功能说明🎞 历史弹幕视频开始播放时加载过去用户发送的弹幕,按时间同步展示&…

要实现的是 “历史弹幕 + 实时弹幕” 混合的完整弹幕系统,类似 B 站的做法。

我们来一步步设计并实现它👇


✅ 场景目标

你的视频播放器要支持:

功能说明
🎞 历史弹幕视频开始播放时加载过去用户发送的弹幕,按时间同步展示
🧑‍💻 实时弹幕当前用户或其他用户正在发的弹幕,立即出现在屏幕上

🧠 核心设计理念

🔁 整体流程图

                   ┌────────────┐┌────────────▶│ WebSocket  │◀────────────┐│             │ 服务器广播 │              ││             └─────▲──────┘              ││                   │                     │▼             ┌─────┴──────┐              ▼[观看者A]        [Spring Boot 后端]       [观看者B]│  GET 弹幕历史    ▲        │       GET 弹幕历史 ││                 数据库     │                   │▼                            ▼                   ▼
同步播放历史弹幕         接收实时弹幕          接收实时弹幕

🧱 技术实现拆解

🔸 后端

✅ 数据模型(MySQL)
CREATE TABLE danmu (id BIGINT PRIMARY KEY AUTO_INCREMENT,video_id BIGINT NOT NULL,text VARCHAR(255) NOT NULL,time_in_video DOUBLE NOT NULL,  -- 出现的时间(秒)send_time DATETIME NOT NULL
);
✅ 接口 1:获取历史弹幕
@GetMapping("/api/danmu/history")
public List<DanmuDto> getHistory(@RequestParam Long videoId) {return danmuRepository.findByVideoIdOrderByTimeInVideo(videoId);
}
✅ 接口 2:WebSocket 实时弹幕服务
@ServerEndpoint("/ws/danmu/{videoId}")
@Component
public class DanmuWebSocket {private static final Map<String, Session> sessionMap = new ConcurrentHashMap<>();@OnOpenpublic void onOpen(Session session, @PathParam("videoId") String videoId) {sessionMap.put(session.getId(), session);}@OnMessagepublic void onMessage(String msgJson, Session session, @PathParam("videoId") String videoId) {// 解析 JSON 为 Danmu 对象Danmu danmu = new Gson().fromJson(msgJson, Danmu.class);danmu.setSendTime(LocalDateTime.now());// 保存弹幕到数据库danmuService.save(danmu);// 广播给所有客户端sessionMap.values().forEach(s -> {try {s.getBasicRemote().sendText(msgJson);} catch (IOException e) {e.printStackTrace();}});}@OnClosepublic void onClose(Session session) {sessionMap.remove(session.getId());}
}

🔸 前端(HTML + JS)

✅ 加载历史弹幕并同步播放
let historyDanmus = []; // { time: 3.5, text: "弹幕内容" }fetch("/api/danmu/history?videoId=101").then(res => res.json()).then(data => {historyDanmus = data.sort((a, b) => a.time - b.time);});setInterval(() => {const currentTime = video.currentTime;while (historyDanmus.length && historyDanmus[0].time <= currentTime) {showDanmu(historyDanmus.shift().text);}
}, 200);
✅ 实时弹幕连接
const socket = new WebSocket("ws://localhost:8080/ws/danmu/101");socket.onmessage = (event) => {const danmu = JSON.parse(event.data);showDanmu(danmu.text);
};function sendDanmu(text) {const time = video.currentTime;socket.send(JSON.stringify({ videoId: 101, text, time }));
}

🔸 弹幕展示动画(CSS + JS)

function showDanmu(text) {const el = document.createElement("div");el.className = "danmu";el.innerText = text;el.style.top = Math.random() * 80 + "%";el.style.color = randomColor();document.getElementById("danmu-area").appendChild(el);setTimeout(() => el.remove(), 8000);
}

✅ 总结:逻辑分工

功能负责方技术
视频播放进度监听前端video.currentTime
加载历史弹幕后端接口GET /api/danmu/history
弹幕显示同步播放前端 JS + 定时器每 200ms 检查一次
实时弹幕收发WebSocket后端广播 + 前端展示
数据存储MySQLtimeInVideo + text

✅ 用户视角体验流程

  1. 打开视频页面
  2. 请求并同步播放历史弹幕
  3. 用户点击发送 → 发到 WebSocket
  4. 后端广播 + 存库
  5. 所有在线用户立即看到


文章转载自:

http://bQRm8xbP.Ljtwp.cn
http://G3TNaVpv.Ljtwp.cn
http://PhrUjnEo.Ljtwp.cn
http://no0VcmLH.Ljtwp.cn
http://Alvvxv7h.Ljtwp.cn
http://UzJpaS83.Ljtwp.cn
http://VQpPkUFt.Ljtwp.cn
http://x7RQaHSr.Ljtwp.cn
http://2jDT1c5N.Ljtwp.cn
http://EzhMDAjC.Ljtwp.cn
http://6f3x8Mng.Ljtwp.cn
http://E28qZDql.Ljtwp.cn
http://aOZ6O52I.Ljtwp.cn
http://kw7yz6Pb.Ljtwp.cn
http://VVCrCrQY.Ljtwp.cn
http://688Muyxm.Ljtwp.cn
http://dmz5ZYSt.Ljtwp.cn
http://H4gkCuZ0.Ljtwp.cn
http://8rD0xeDi.Ljtwp.cn
http://ZMYXQOft.Ljtwp.cn
http://A5fvetnn.Ljtwp.cn
http://P9UDywut.Ljtwp.cn
http://u1i6zZNp.Ljtwp.cn
http://AWtqOaPN.Ljtwp.cn
http://GwE6RBx0.Ljtwp.cn
http://aPyHUL3T.Ljtwp.cn
http://mtMhn7G9.Ljtwp.cn
http://VFt1AAc4.Ljtwp.cn
http://GuagQ20c.Ljtwp.cn
http://XDruUrtm.Ljtwp.cn
http://www.dtcms.com/wzjs/649802.html

相关文章:

  • 有免费可以做的网站吗有没有好的做海报的网站
  • 宁波网站开发建设公司云南网络推广报价明细
  • 广告网站建设网如皋网页设计
  • 新建的网站百度搜索不到中天建设集团有限公司广西分公司
  • 石家庄城市建设投资中心网站wordpress美化主题下载
  • 郑州网站开发的公司制作人漫画
  • 织梦 网站统计扬州推广公司
  • 南县网站制作直播做ppt的网站
  • 自己做图片的网站吗网络培训课堂app
  • ui设计师网站素材下载网站模板
  • 咸阳网站建设seo做网站全包
  • 阜新公司做网站怎么注册集团公司
  • 用ps做网站设计企业展馆策划公司
  • 可以做微信游戏的网站有哪些网站当地备案
  • 网站建设售价多少钱上海网站建设yuue
  • 手机网站制作优化房屋设计风格
  • 营销型网站建设应该注意什么怎么自己做电影网站
  • 要建设企业网站网站系统安全性
  • 网站界面设计尺寸龙泉驿区建设局网站
  • jq网站特效插件下载如何设计一个网页界面
  • 网站建设分几种编程语言网站的空间是什么意思
  • 贵阳网站建设建站系统国家知识产权专利网官网
  • 网站建设 样板wordpress 如何设置首页
  • 网站反链有好处吗沈阳关键词推广
  • 美食网站开发详细设计点评网站建设
  • 租用服务器网站做基金哪个网站好
  • 公司没有自己的网站网站备案在哪个网
  • 画册什么网站做方便爱射影院网站建设中
  • ppt做的好的网站关于普通话的手抄报
  • wordpress 自动登陆兰州网站优化推广