专栏首页各直播源码开发直播源码中的主播PK功能是如何实现的
原创

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

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

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

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

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等特定字符判断是否需要作出相应操作,若接收到的信息是自己需要的,则作出相应操作,否则不响应,至此,一个通讯流程就这样完成了。

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还能做更多的事。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一对一直播开发PHP源码

    一对一源码在php开发中我们经常会遇到一些功能需要二级联动,二级联动就是说我们在选择一级select不同的option,下面的二级option的属性值在进行相应...

    nicai123
  • ​语音聊天程序源码——简单的聊天室搭建

    nicai123
  • 直播开发需要什么样的开发环境

    摄像机和拾音器收集视频及音频数据,涉及技术摄像机为CCD、CMOS,拾音器为声电转换装置、音频放大电路

    nicai123
  • 面试不易,控场情况下,感觉少要了1万!

    我:spring中对国际化支持挺好的,比较简单,只需要按照语言配置几个properties文件,然后主要注册一个国际化的相关的bean,同时需指定一下配置文件的...

    Java搬砖工人
  • 面试不易,控场情况下,感觉少要了1万!

    所有文章以系列的方式呈现,带领大家成为java高手,目前已出:java高并发系列、mysql高手系列、Maven高手系列、mybatis系列、spring系列,...

    路人甲Java
  • 【CMake教程】(二)CMake 通过CMakeLists.txt自动配置程序版本号

      本文主要讲述如何使用CMakeLists.txt,配置程序的版本号。程序在发布的时候需要对用的版本号,同时为了保证程序的兼容性,往往需要在程序中判断当前程序...

    CNNer
  • 金融数据获取的api接口

    最近苹果的股价一路疯长,继周四突破万亿美元市值后,周五盘中高点、收盘价双创新高。盘中高点达208.74美元,收盘价报207.99美元,上涨0.29%,创历史收盘...

    数据小磨坊
  • 吕乐:面向医学图像计算的深度学习与卷积神经网络(65ppt)

    【新智元导读】本文是美国国家研究院健康临床中心(NIH-CC)吕乐在GTC DC上的演讲整理,主题有关利用深度学习和深度神经网络进行医学影像分析。 ? 放射医学...

    新智元
  • sanic(2):创建handler

    上文说到已经创建了app,但是此时的项目里只有两个光秃秃的文件。要完成一个完整的网站,还需要在上面添加handler和templates。

    超级大猪
  • Hinton 四问:一个重要的关注点是让神经网络真正理解文档的内容

    【新智元导读】 Hinton谈到了真正的人工智能、人工智能威胁和深度学习的下一个进展等问题。 国外网站gigaom 最近刊登了对Hinton专访的四个问题, ...

    新智元

扫码关注云+社区

领取腾讯云代金券