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

2019-10-11 18:12:19 浏览数 (1)

直播行业为赢得更广泛用户的青睐,自然要不断开发更有趣的玩法、模式,在直播源码中加入主播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还能做更多的事。

0 人点赞