直播行业为赢得更广泛用户的青睐,自然要不断开发更有趣的玩法、模式,在直播源码中加入主播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 删除。
我来说两句