package com.c9mj.platform.util;
import com.c9mj.platform.live.mvp.model.LivePandaBean;
/**
* author: liminjie
* date: 2017/2/27
* desc: DanmuUtil弹幕数据包生成工具类
*/
public class DanmuUtil {
public final static byte[] START_FLAG = {0x00, 0x06, 0x00, 0x02}; //连接弹幕服务器帧头
public final static byte[] RESPONSE = {0x00, 0x06, 0x00, 0x06}; //连接弹幕服务器响应
public final static byte[] KEEP_ALIVE = {0x00, 0x06, 0x00, 0x00}; //与弹幕服务器心跳心跳保持
public final static byte[] RECEIVE_MSG = {0x00, 0x06, 0x00, 0x03}; //接收到弹幕消息的帧头
public final static byte[] HEART_BEAT_RESPONSE = {0x00, 0x06, 0x00, 0x01};//心跳保持服务器返回的值
public final static int IGNORE_BYTE_LENGTH = 16;//弹幕消息体忽略的字节数
public final static int MAX_AUTO_CONNECT_TIME = 5;//自动断线重连次数
/**
* 建立连接请求数据包
*
* @param bean
* @return
*/
public static byte[] getConnectData(LivePandaBean.DataBean bean) {
String contentMsg = "u:" + bean.getRid() + "" +
"@" + bean.getAppid() + "" +
"\nk:1" +
"\nt:300" +
"\nts:" + bean.getTs() + "" +
"\nsign:" + bean.getSign() + "" +
"\nauthtype:" + bean.getAuthType();
byte content[] = contentMsg.getBytes();
byte length[] = {(byte) (content.length >> 8), (byte) (content.length & 0xff)};
byte sendMessage[] = new byte[START_FLAG.length + 2 + content.length];
/**
* 1.帧头
* 2.content[]的数据长度
* 3.content[]
*/
System.arraycopy(START_FLAG, 0, sendMessage, 0, START_FLAG.length);
System.arraycopy(length, 0, sendMessage, START_FLAG.length, length.length);
System.arraycopy(content, 0, sendMessage, START_FLAG.length + length.length, content.length);
return sendMessage;
}
public static byte[] getHeartData() {
return KEEP_ALIVE;
}
public static int byte2Int(byte[] bytes) {
int value = 0;
byte temp;
for (int i = 0; i < bytes.length; i++) {
temp = bytes[i];
value += (temp & 0xFF) << (8 * i);
}
return value;
}
}