客户端通过向服务端发送同步开始包,通知服务端开始推送最新数据。
通过执行该流程,客户端向服务端发送同步开始包,通知服务端开始推送最新数据。
client.on('data', function(data) {
const buf = Buffer.from(data,'utf-8')
const msgType = buf[3]
const msgLenBuf = Buffer.from([buf[4],buf[5],buf[6],buf[7]])
const msgLength = msgLenBuf.readInt32BE(0)
const msgBuf = Buffer.alloc(msgLength)
buf. copy(msgBuf,0,8,msgLength + 8);
switch (msgType){
case 8:
console.log("认证成功,开始发送开始同步包")
sendBegin(msgBuf)
break;
default:
break;
}
});
/**
* 发送开始同步包
* @param msg
*/
function sendBegin(msg) {
var newObj = JSON.parse(msg.toString() || '[]')
if(newObj == null || newObj == undefined)
return;
var token = newObj.token
if(token == null || newObj == undefined)
return;
client.write(getBeginMsg(token))
}
/**
* 生成开始同步包
* @param data
*/
function getBeginMsg(token) {
const bufHead = Buffer.from([0,0,1,2]);
const bufMsg = Buffer.from(token)
const buflength = Buffer.alloc(4,0)
buflength.writeIntBE(bufMsg.length, 0, 4);
const totalLength = bufHead.length + buflength.length + bufMsg.length;
return Buffer.concat([bufHead,buflength,bufMsg],totalLength);
}
参数名称 | 必填 | 说明 |
---|---|---|
token | 是 | 服务端返回的token字段,用于权限验证。 |
客户端收到服务端返回的同步开始返回包。
返回数据类型为字节流,包括包头和包数据,返回的包类型为同步开始返回包。
00 00 01 03 00 00 00 00
返回的包头结构表如下所示:
名称 | 类型 | 长度 | 返回值 |
---|---|---|---|
固定位 | 数字 | 2字节 | 为 00 00 |
版本号 | 数字 | 1字节 | 为 01 |
指令码 | 数字 | 1字节 | 为03,同步开始返回包,服务端发送这个包给客户端确认开始推送最新数据 |
包数据长度 | 数字 | 4字节 | 为包数据段的长度 |
无响应包数据