直播间实时在线人数方案
最近路演项目已经到了上线阶段,现在来梳理下路演开发中所遇到的问题。
首先是直播间实时在线人数问题
当时的考虑是用阿里的在线人数接口,然后通过解析阿里的数据获得当前房间里的在线人数。由于阿里的数据有5min的延迟,导致用户刚进入直播间,头像已经显示了,但是阿里给返回的人数为0,故将此方案排除。
最后确定的方案是通过websocket去实现实时在线人数,代码如下:
@Component
@Slf4j
@ServerEndpoint(value = "/websocket/{channelId}")
public class WebsocketService {//记录当前连接,每个客户端都有对应的session,服务器端通过它向客户端发送消息private Session session;private String channelId;//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。private static final Map<Session,String> map = new ConcurrentHashMap<>();/*** @description 有新的链接建立成功时调用该方法* @param session* @return void**/@OnOpenpublic void open(Session session, @PathParam(value="channelId")String channelId) throws IOException {List<String> list = new ArrayList<>();this.session = session;map.put(session,channelId);for (String str : map.values()){if(channelId.equals(str)){list.add(channelId);}}sendMessage(channelId,list.size());log.info("当前在线用户:" + map.size());}@OnClosepublic void onClose(Session session) throws IOException {this.session = session;String channelId = map.get(session);int count = subOnlineNum(session);sendMessage(channelId,count);log.info("当前在线用户:" + count);}public void sendMessage(String channelId,int count) throws IOException {List<Session> sessions = new ArrayList<>();for(Session key: map.keySet()){if(map.get(key).equals(channelId)){sessions.add(key);}}for (Session session : sessions){session.getBasicRemote().sendText(String.valueOf(count));}}/*** @description 在线数减1* @param* @return void**/public static synchronized int subOnlineNum(Session session){String channelId = map.get(session);List<String> list = new ArrayList<>();for (String str : map.values()){if(channelId.equals(str)){list.add(channelId);}}map.remove(session);return list.size()-1;}
当不同的房间号有链接进来,就向当前所在房间的所有用户发送当前的在线人数,已解决实时在线人数问题。
还有一种方案是咨询做过直播的前辈,他给的方案使用心跳机制去解决实时在线人数,因为当时项目没有申请redis资源,所以这种方案没没经过验算,故只提供个思路。
创建完直播间,直接写一个redis 的key .用set 去维护,每个直播间单独一个key
如果直播间 关播 直接把key 清了就结束了,但是web 端维不了退房的操作。这里可能需要把key 设计成 hash。
里面放心跳时间。 k:uid v:heartTime,服务器邀请定时把没有心跳的用户清出去。
hash 里面用户在,切心跳正常 说明还在看直播,如果定时任务清理的话 ,只需要判断,用户在hash 里面就行
如果还有其它方案的话,可以留言大家进行沟通。
直播间实时在线人数方案相关推荐
- 百万人在线的直播间实时聊天消息分发技术
随着直播类应用的普及,尤其直播带货概念的风靡,大用户量的直播间场景已然常态化. 大用户量直播间中的实时互动是非常频繁的,具体体现在技术上就是各种用户聊天.弹幕.礼物.点赞.禁言.系统通知等实时消息. ...
- 快手直播间实时弹幕发言API
请求地址 HTTPGET https://www.youwk.cn/api/dm/kuaishou 请求参数 参数名 参数说明 key 用户请求密钥,可在 密钥管理页面 申请 id 快手直播间live ...
- 如何查看直播间在线人数?观看软件数据分析
如何查看直播间在线人数?观看软件数据分析#直播#直播人数#直播间#直播带货#直播变现 文章教大家如何看直播间的在线人数,比如小杨哥的直播间,他的在线人数是 10 万加 10 万加,到底是加多少?你根本 ...
- 抖音直播带货后如何复盘?抖音直播间高效复盘法
做直播时需要复盘的. 因为你需要搞清楚直播间的流量.转化.哪些地方做的好,哪些地方做的不好,然后解决问题,让下一场直播做的更好. 而抖音直播复盘做的就是这些事,找出问题,然后解决问题. 今天我们来说一 ...
- 抖音直播间千川投放有用吗?直播间投放分析有什么技巧
目前来说,抖音推广直播间仍然是非常多抖音直播电商运营者加热直播间的主要方式之一,抖音推广直播间最大优势就是实时画面展示在视频推荐页,且可以根据定向人群进行投放,能够最大限度引流直播间. 千川投放是目前 ...
- 20条直播间行业术语给你总结好了
上期文章跟大家分享了直播间岗位的行业术语,除此之外,每场直播结束后都需要数据复盘分析,以便策划出下一场更好的直播效果. 那么在做直播数据分析时,你不知道以下这些行业术语恐怕就要露怯了,不要慌,马上来g ...
- 抖音直播间增加人气的几个妙招:国仁楠哥
抖音直播间人气怎么提高,抖音上热门的最佳方法,怎么让拍的抖音上热门,影响抖音直播间人气的因素有哪些? 在线人数就是观看你直播的实时在线人数和总观看的人数.坚持稳定的开播节奏,每天在固定的时间开播,并且 ...
- 机房搭建打造网红直播间
网红直播间机房搭建,手机机房搭建,抖音机房,快手机房,解决网络方案问题,有效解决ip问题. 可在1000平米的房间搭建10000台手机,一人可以控制成千上万台手机运行,直播间实时互动,榜上点关注,自动 ...
- 抖音直播间弹幕protocbuf分析
免责任声明: 任何可操作性的内容与本文无关,文章内容仅供参考学习,如有侵权, 损害贵公司利益, 请联系作者,会立刻马上进行删除 分析下: 1.protocolbuffer(以下简称PB)是google ...
最新文章
- 怎样能用计算机打出表白数字,怎么用数字表白?盘点数字表白暗语
- 【小白学习C++ 教程】二十二、C++ 中的STL容器stack、queue和map
- script标签中的async和defer
- 腾讯信用向全国开放了,据说700分都算低的!
- android 打包相关问题记录
- tensor判断是否相等_PyTorch的Tensor(中)
- Visual Studio 11预览: 新的编程语言功能
- mysql5.7非源码版msi安装教程
- glassfish3新建domain
- 深度装机大师一键重装_“云骑士一键重装系统”,看标题就知道装系统原来如此简单...
- 为PDF批量添加书签
- 黄素单核苷酸小麦麦清白蛋白纳米粒|石杉碱甲乳清白蛋白纳米粒Huperzine-whey protein|化学试剂
- 不努力做事,隔壁老王 可想而知您将来必然是艰难的
- java 获取est时间_将日期字符串(EST)转换为Java日期(UTC)
- 2021哈工大深入理解计算机系统Lab5(linklab)
- 微信开发者工作遇到的ERROR
- 信息系统项目管理师---第五章 项目范围管理
- 数据库数据增删改查练习题(1)——学生选课数据库
- linux下rsync启动命令,linux下rsync命令详细整理
- 浅谈快件清关与邮关的区别