法情直播室 3.0
[新功能]
1. 投票 - Poll 系统
这应该时最大的添加了。淑维老师即将给课程,她要求直播时要进行投票。我之前有大概策划过,但没有落实。趁这个机会完成它。
投票系统有2个部分 - 前台和后台。
有几点需要考量:
A:前台必须在要投票时,自动出现。不应该让观众另外点击链接去其他网站。
B: 后台必要容易操作,让主讲人自己也可以操控。
C: 应该可以支撑不同的投票平台,让未来如果主讲人有特别需求,我们可以配合。
让投票自动出现是最难解决的一块。这是因为,用户需要不断呼叫服务器。服务器的数据库每一秒收到几百个query,肯定应付不来。
我的解决方法是,让用户没一秒呼叫一个 json 文件。Json 文件就是一个简单的文字文件,犹如 TXT,可是里头有 item + value。
例子:
Code: Select all
{"poll_enable":"enable","poll_id":"12345","poll_status":"0","time":1646467218}
每一次呼叫,就查看此 json 文件是否 outdated 了。如果和现今时间差异 5秒,就呼叫另一个 script,更新一下 data。
这样以来,data 最多也是过时5秒钟罢了。Database 也是每5秒钟才被呼叫一次,可以应付。
这样,如果 poll_status 是 ’1‘ 的话,就会自动开启;如果是 ’0‘ 的话,就会自动关上。
可是,问提来了。如果用户投票了后,自己关上的话,因为 poll_status 还是 1,过了1秒,又会跳出来。解决方法是,先检查是否 poll_status 有更新,如果没有更新的话,就不用做任何的 action。
2. 用Websocket统计人数
我们之前统计人数,都是通过客服系统来看,和通过直播室聊天区。各有各的弱点。
这一个版本起,我们通过 Websocket 来断定人数。每一个用户进入直播室后,会开一个 ’socket'。这个 'socket' 需要不断更新 'keep-open'。
这样以来,我们只需计算有几个 'socket' 是开着的,就可以断定有几个人在观看直播了。
3. 跳转到直播
偶尔会收到留言或客服信息,有学员会询问为什么自己的直播落后了。我们添加了一个【跳转到直播】的按钮,让用户可以轻易点击后,就跳到直播了。
这也方便 iOS 用户,因为在 iOS Player 是没有这个按钮的。之前他们都需要刷新才会去到直播点。
4. 跳出聊天室
点击按钮后,聊天室就会跳出,浮在荧幕中间。主要是方便手机用户输入信息。
5. 关于法情直播室
添加了一个 【关于】的页面。让用户可以看到这个 Changelog,也可以提交启用或停用报告。
[改进/ 更新]
1. Azure Media Player 更新 2.3.8 -> 2.3.9
2. Bootstrap 更新 4.2 -> 5.0
3. 用Flexbox来编写直播室构造
从第一版本开始,直播室是用 Bootstrap Rows & Columns 来编造。我们用 Bootstrap 5 的 flexbox 来让视频和聊天去会根据不同的荧幕大小自动调整。
4. 法情直播室 logo 换成 SVG Vector
5. 直播室标题,Align centre
6. 自动计算并断定聊天区的高度
这个主要是因为 iOS Safari 的 address bar 被拉到电话下边,会挡着输入信息的栏。
通过Javascript 和 CSS Calc 的功能,我们可以计算用户荧幕的高度有多少,并告诉浏览器。
7. Azure Media Player 的代码在法情 server Self Host
8. Navigation bar 的按钮颜色稍微调整
9. Azure Media Player 转用最新的 Flush 皮肤
10. Navigation bar 按钮自动收缩的 Animation 代码重新编写,现在 animation 非常顺了。
---
[仪表板]
1. 去除了 maximum 20 课程的限制
2. 课程列表加上了 Navigation 按钮
以上两项,非常感谢 @papercup_prince 的协助。
3. 添加了 Poll 的控制表
4. 利用 local storage 储存功能,让浏览器会记得最后浏览的页面,并在点击【保存】或【start poll】后会保留在此页面,不是回到主页。
5. 加了【测试直播链接】的按钮,方便进到直播室测试。