- 請求報文與響應(yīng)報文格式
請求報文與響應(yīng)報文格式一致慎玖,均由6字節(jié)的報頭和荷載組成;其中報頭第一個字節(jié)為協(xié)議版本號笛粘,第二個字節(jié)為序列號趁怔,接下來的4個字節(jié)為荷載的長度。
- 協(xié)議格式
字節(jié) | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|
說明 | 協(xié)議版本號 | 序列號 | 荷載長度 | 荷載長度 | 荷載長度 | 荷載長度 |
- 協(xié)議版本號說明:
當(dāng)前可用版本號:0x02
- 序列號說明:
序列號用于保證數(shù)據(jù)包的順序薪前,由客戶端生成润努,服務(wù)端返回響應(yīng)數(shù)據(jù)包時將其返回給客戶端;可用的取值范圍 0~255示括,其中0用作服務(wù)器推送數(shù)據(jù)專用的序列號铺浇,客戶端實際可用的范圍為 1~255。
- 荷載格式說明:
荷載為JSON字符串的 byte 數(shù)組垛膝,其中有兩個固定的字段
buzcmd
和identity
(如下代碼):
{
"buzcmd": "業(yè)務(wù)指令(必填鳍侣,區(qū)分不同業(yè)務(wù)可使用“/”做區(qū)分,如:sys/user)",
"identity": "唯一標(biāo)識(可選吼拥,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)"
}
- 客戶端請求:
- heartcheck(心跳檢測)
請求格式
{
"buzcmd": "heartcheck",
"identity": "唯一標(biāo)識(可選倚聚,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)"
}
響應(yīng)格式
{
"buzcmd": "heartcheck",
"identity": "唯一標(biāo)識(可選,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失斣淇伞)"
}
- login(登錄)
這里的登錄惑折,并不是嚴(yán)格來說的登錄,只是用來關(guān)聯(lián)業(yè)務(wù)與Socket連接的枯跑。
請求格式
{
"buzcmd": "login",
"identity": "唯一標(biāo)識(可選惨驶,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"username": "用戶名",
"password": "密碼"
}
響應(yīng)格式
{
"buzcmd": "login",
"identity": "唯一標(biāo)識(可選,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失斄仓)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- logout(登出)
請求格式
{
"buzcmd": "logout",
"identity": "唯一標(biāo)識(可選敞咧,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)"
}
響應(yīng)格式
{
"buzcmd": "logout",
"identity": "唯一標(biāo)識(可選,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失敼枷佟)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- attend/identityrec(識別記錄上傳)
請求格式
{
"buzcmd": "attend/identityrec",
"identity": "唯一標(biāo)識(可選休建,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"uid": "用戶唯一標(biāo)識(如果該字段為空,那么卡號字段不能為空)",
"cardnumber": "卡號",
"rectime": "識別時間",
"direction": "進出方向(1-進 2-出)",
"recimage": "識別圖片(base64)",
"devid": "設(shè)備唯一標(biāo)識",
"areaid": "區(qū)域唯一標(biāo)識",
"schoolid": "學(xué)校唯一標(biāo)識"
}
響應(yīng)格式
{
"buzcmd": "attend/identityrec",
"identity": "唯一標(biāo)識(可選评疗,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失敳馍啊)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- 服務(wù)端推送
- push/user(推送用戶信息)
推送格式
{
"buzcmd": "push/user",
"identity": "數(shù)據(jù)包唯一標(biāo)識",
"uid": "用戶唯一標(biāo)識",
"username": "用戶姓名",
"usertype": "用戶類型(S-學(xué)生,T-教師)",
"classname": "班級名稱(教師用戶為空)",
"cardnumber": "卡號(可為空)",
"idimage": "底庫圖片百匆,圖片地址"
}
回執(zhí)格式
{
"buzcmd": "logout",
"identity": "唯一標(biāo)識(可選砌些,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失敗)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- push/area(推送區(qū)域信息,暫未實現(xiàn))
推送格式
{
"buzcmd": "push/area",
"identity": "數(shù)據(jù)包唯一標(biāo)識"
}
回執(zhí)格式
{
"buzcmd": "push/area",
"identity": "唯一標(biāo)識(可選存璃,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失斅丶觥)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- push/device(推送設(shè)備信息,暫未實現(xiàn))
推送格式
{
"buzcmd": "push/device",
"identity": "數(shù)據(jù)包唯一標(biāo)識"
}
回執(zhí)格式
{
"buzcmd": "push/device",
"identity": "唯一標(biāo)識(可選纵东,可用此字段來對數(shù)據(jù)包做唯一標(biāo)識)",
"code": "操作代碼(0-成功 1-警告 2-失斦痴小)",
"data": "響應(yīng)數(shù)據(jù)信息",
"message": "操作響應(yīng)提示信息"
}
- 代碼示例(心跳檢測)
請求示例
String body = "{\"buzcmd\":\"heartcheck\"}";
ByteBuf buf = Unpooled.buffer(1 + 1 + 4 + body.length());
buf.writeByte(0x02);
buf.writeByte(0x01);
buf.writeInt(body.length());
buf.writeBytes(body.getBytes());
心跳響應(yīng)
ByteBuf buf = Unpooled.buffer(1 + 1 + 4 + body.length()); // 服務(wù)端響應(yīng),這里新增
byte version = buf.readByte();
byte sequence = buf.readByte();
int length = buf.readInt();
byte[] content = new byte[length];
buf.readBytes(content);
- 響應(yīng)荷載
字段 | 類型 | 說明 |
---|---|---|
code | byte | 處理標(biāo)識(0-成功 1-警告 2-失斮饲颉) |
data | Object | 響應(yīng)數(shù)據(jù) |
message | String | 響應(yīng)消息 |