V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
erisfloralia
V2EX  ›  问与答

请问该怎么实现对视频观看人数的限制?

  •  
  •   erisfloralia · 2019-07-10 13:59:49 +08:00 · 1048 次点击
    这是一个创建于 1955 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景:页面有各种类型的文件,对用户进行分组,不同组的用户对每个视频的观看总人数限制不一样。只有一直在播放才算做观看,关闭页面即算作不观看。

    以前一直看各位 V 友大佬发帖讨论,没有发过贴,如果太过简单,求勿喷。= =
    6 条回复    2019-07-12 14:16:27 +08:00
    icy37785
        1
    icy37785  
       2019-07-11 14:16:21 +08:00 via iPhone   ❤️ 1
    ajax 或者 websocket 二选一
    erisfloralia
        2
    erisfloralia  
    OP
       2019-07-12 08:37:52 +08:00
    @icy37785 谢谢回答,我目前只会使用 onbeforeunload 来监控是否离开页面然后 ajax 往后台传数据,但是这个函数在火狐和 ie 没用?或者是我不太会用吗?看来只能用 websocket 了。 = =
    icy37785
        3
    icy37785  
       2019-07-12 09:02:58 +08:00   ❤️ 1
    @erisfloralia 首先,在线人数的统计肯定是 websocket 效果最好,不管性能,还是精确度都比 ajax 要好,其次感觉你对于 ajax 的实现想复杂了,并不需要监控是否离开页面,ajax 轮询就可以了,前台访问在线人数接口,后台记录访问的客户端,设置过期时间就行了,统计客户端数量就可以知道在线人数。
    erisfloralia
        4
    erisfloralia  
    OP
       2019-07-12 09:51:52 +08:00
    @icy37785 那么设置过期时间然后数据库查表应该会造成一定时间的延迟吧。无法马上统计出不在线的用户。为何 websocket 好一点(其实我还没用过 websocket,不清楚,只是大概了解一点)= =
    icy37785
        5
    icy37785  
       2019-07-12 11:38:45 +08:00   ❤️ 1
    @erisfloralia 两个问题分开来回答,1.过期时间设置足够短,轮询设置足够快,延迟就可以忽略不计,比如一秒轮询一次,数据一秒过期,那么延迟就一秒,但是这样对服务器的压力就很大,所以轮询速度和服务器压力之间得自己去找到一个合适的平衡的事件间隔。
    2.websocket 的优点,就是上面说的,ajax 轮询的缺点,websocket 实时性好,对服务器的压力小。
    理解了大概的原理之后你应该想得明白到底是怎么回事的,其他的你上网查查资料,网上挺多的。
    erisfloralia
        6
    erisfloralia  
    OP
       2019-07-12 14:16:27 +08:00
    @icy37785 好的,谢谢大佬详细解答 = =
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5436 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:59 · PVG 14:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.