本文基于"斗鱼弹幕服务器第三方接入协议V1.6.2"编写
基础准备
接入方式:Socket
API服务地址:openbarrage.douyutv.com:8601
斗鱼私有协议说明
如上图所示,每次发送的消息或者接收到的消息都会由 消息长度 + 消息长度 + 消息类型 + 真实消息内容 + 结尾标识 组成
消息 = 消息长度(4) + 消息长度(4) + 消息类型(4) + 真实消息内容(?) + 结尾标识长度(1)
其中这里要特别说明三个点
一、消息长度的算法,消息长度 = 消息长度(4) + 消息类型(4) + 真实消息内容长度 + 结尾标识长度(1)
二、虽然消息里有 两个消息长度字段,但是如上面的算法所示,计算消息长度是 只需要加 一个 消息长度(4) 字段的长度即可。
三、斗鱼要求的消息长度都为 4 字节小端整数,java中都是大端整数,所以需要通过特别方法转换,我下面都给处理对应的工具代码
int contenLeng = 4 + 4 + content.length() + 1; //消息长度算法
下面开始实际进行接入,先上代码
示例代码
public static void main(String[] args) throws IOException, InterruptedException {
Socket socket = new Socket("openbarrage.douyutv.com", 8601);
//发送登录请求(登入9999房间)
String loginCMD = "type@=loginreq/roomid@=9999/";
send(loginCMD, socket);
//读取登录请求消息
byte[] bytes = read(socket);