如何和异地的朋友一起看电影

博主分享了如何利用WebSocket和校园内网视频资源,创建一个可以同步控制多个设备播放的观影功能。通过拦截视频操作并实时同步到服务器,实现了类似一起看的功能。遇到的挑战包括用户交互限制和播放器的优化,最终虽然只和朋友看了一次,但提供了实现此类功能的思路和技术细节。
摘要由CSDN通过智能技术生成
  • 前几天和小朋友一起在b站上看电影,觉得这个一起看的功能很不错。不过只能在手机端使用,而且有很多影片看不了,所以就想着能不能自己做一个可以同时看电影的功能。

实现思路

  • 学校内网有一个视频网站,包含了大量的资源。并且它请求资源的方式是直接利用video的src属性发送的GET请求,只要接入了校园网,可以很方便的进行拦截。
  • 基本的功能就是可以用一个网页控制其他网页的视频播放情况,从网络上查了一些资料之后发现可以使用WebSocket实现。
  • WebSocket是一种网络协议,建立在TCP的基础之上,通过HTTP/1.1协议的101状态码进行握手。它的特点就是可以进行全双工通信,不必再以轮询的方式来查看数据是否更新,和发布订阅者模式有点像。
  • 那么一起看功能的实现就是拦截对视频的操作,将暂停、跳转等动作发生拦截下来,并且向服务器发送相应的通知,服务器接收到数据,进行判断之后,再将进行的动作通知到每个连接到服务器的客户端,从而实现同步的暂停、播放、跳转等功能。

代码

  • 有了思路以后代码就很简单,和聊天室的实现差不多代码地址

问题

  • 报错:Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
    在用户没有和DOM进行交互的时候调用video.play()等方法的时候就会出现这种错误,我的解决方法是打开页面时会弹出窗口,引导用户进行点击操作。

总结

  • 其它网站的视频大多都有同源限制,并且都以视频流的方式分割加载,不是很好获取。
  • 这个功能做出来之后才和小朋友看了一集电视剧,她就实习去了,连不上校园网也没得看了,遗憾。。。
  • 优化体验要重写播放器组件,可以更方便的跳转视频。用自己的DOM覆盖在vidoe上,监听点击拖拽等操作,不过有点麻烦。也可以加入房间号,分发动作的时候只对相应的房间进行分发。不过对服务器压力可能有点大,而且我也只是和小朋友看一下,私人定制hhhh
  • 我的博客:https://doumjun.github.io/vuepress.blog/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值