前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >直播源码中的主播PK功能是如何实现的

直播源码中的主播PK功能是如何实现的

原创
作者头像
nicai123
修改2019-10-11 18:12:19
1.6K0
修改2019-10-11 18:12:19
举报

直播行业为赢得更广泛用户的青睐,自然要不断开发更有趣的玩法、模式,在直播源码中加入主播PK功能就是一种提高直播互动性、激发用户好胜心的方法,一方面这种方法可以吸引更多用户观看,增加主播的曝光率,另一方面它又能激发用户的购买欲,增加平台和主播的收入。

PK功能可以使用当下十分流行的Socket.IO为基础来实现。Socket.I O 是一个面向实时 web 应用的 JavaScript 库。它使服务器和客户端之间实时双向的通信成为可能。它由两个部分组成:客户端库和一个面向Node.js的服务端库。像Node.js一样,它也是事件驱动的。并且它有一个优势,它会自动选择合适的双向通信协议。我们充分利用了socket.io的优势,实现了对直播源码中PK功能流程的控制。

首先,对Socket.IO的App客户端进行初始化设置,连接服务端(基础代码如下):

代码语言:javascript
复制
try {
    IO.Options option = new IO.Options();
    option.forceNew = true;
    option.reconnection = true;
    option.reconnectionDelay = 2000;
    mSocket = IO.socket(AppConfig.getInstance().getSocketServer(), option);
    mSocketHandler = new SocketHandler();
} catch (Exception e) {
    e.printStackTrace();
    L.e(TAG, "socket异常--->" + e.getMessage());
}
public SocketUtil connect(String liveuid, String stream) {
  if (mSocket != null) {
      mSocket.on(Socket.EVENT_CONNECT, mConnectListener);//连接成功
      mSocket.on(Socket.EVENT_DISCONNECT, mDisConnectListener);//断开连接
       mSocket.on(Socket.EVENT_CONNECT_ERROR, mErrorListener);//连接错误
      mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, mTimeOutListener);//连接超时
     mSocket.on(Socket.EVENT_RECONNECT, mReConnectListener);//重连
     mSocket.on(CONN, onConn);//连接socket消息 
        mSocket.on(BROADCAST, onBroadcast);//接收服务器广播的具体业务逻辑相关的消息
     mSocket.connect();
     mLiveuid = liveuid;
     mStream = stream;
        }
        return this;
    }

然后再与服务端实现通信。只需要简单传入参数,并emit到服务端,服务端接收后通过逻辑处理,向相应的App端转发socket信息,这时,接收到消息的客户端根据socket的method、action等特定字符判断是否需要作出相应操作,若接收到的信息是自己需要的,则作出相应操作,否则不响应,至此,一个通讯流程就这样完成了。

代码语言:javascript
复制
public void anchorBusy(String touid) {
        if (mSocket == null) {
            return;
        }
        mSocket.emit(SEND,
                new SendSocketBean()
                        .param("_method_", LINK_MIC)   //参数
                        .param("action", 7)  //参数
                        .param("msgtype", 10) //参数
                        .param("touid", touid)  //参数
                        .create()
        );
    }

通过使用Socket.I O,可以实现A客户端与服务端与B客户端进行连麦PK的操作,当然,Socket.IO还能做更多的事。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档