本流程为客户端向数据服务器发送登陆包,获取token与权限信息。
通过执行该流程可以获取权限token与权限相关说明;
获取的token存在有效期,请及时更新;
请求所需要的账号与密码请与项目工程师与销售服务人员联系获取。
var username = "xxx";
var userpass = "xxx";
/**
* 连接服务器
*/
function onConnect()
{
client.on('data', function(data) {
});
client.on('close', function() {
client = net.createConnection(port, host, onConnect);
client.on('error',onError);
});
console.log("连接成功,开始发送认证信息。")
client.write(getAuthMsg());
}
/**
* 生成登陆包
* @param socket
*/
function getAuthMsg() {
const bufHead = Buffer.from([0,0,1,7]);
const authMsg = username + ',' + userpass;
const bufMsg = Buffer.from(authMsg);
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);
}
参数名称 | 必填 | 说明 |
---|---|---|
username | 是 | 用户名 |
password | 是 | 密码 |
服务端返回登陆成功包,告知客户端登陆成功,并且数据段是当前有效token的ASCII字符串。
返回数据类型为字节流,包括包头和包数据,
返回包有两种类型,一种是登陆成功包,另一种是权限不足包。
000001080000007f7b22746f6b656e223a2261616161222c2022757365726e616d65223a2278787878222c20
2270726f6a65637473223a2231323334222c2022706c61636573223a22353637382c37353433222c20227661
6c696444617465223a22323031392d31302d32382031363a30303a3231222c202276616c6964223a2274727
565227d
返回的包头结构表如下所示:
名称 | 类型 | 长度 | 返回值 |
---|---|---|---|
固定位 | 数字 | 2字节 | 为 00 00 |
版本号 | 数字 | 1字节 | 为 01 |
指令码 | 数字 | 1字节 | 为08 / 09,08表示服务端认证客户端成功,09表示权限不足 |
包数据长度 | 数字 | 4字节 | 为包数据段的长度 |
返回的包数据为字节流,解析成字符串后为json格式。
包数据json字符串示例:
{
"token": "eyJhbGciOiJIUzM4NCJ9.eyJwbGFjZXMiOiI2MjUxLDYyNTIsNjI1Myw2MjU0LDYyNTgsNjI1OSw2MjYwLDYyNj<br>EsNjI2Miw2MjYzLDYyNjQsNjI2NSw2MjkwLDYyOTIiLCJwcm9qZWN0cyI6IjIwMTgwMDM0IiwidXNlcm5hbWUi<br>OiJ0eDEyMzQ1NiIsImlhdCI6MTU3MTcxMTgyOSwiZXhwIjoxNTcxODE5ODI5fQ.08YQdyCr563OiSsNjKjUgg<br>v5_8B3G2gBvjdSiXIiS3C5uWT_e9FY1vpdq9vVdkX-",
"username": "xxxx",
"projects": "1234",
"places": "5678,0123",
"validDate": "2019-10-08 01:01:01",
"valid": true
}
参数名称 | 说明 |
---|---|
httpcode | 200-正常,401-无权限,500-其他错误。 |
token | 用于后续请求的权限验证,注意token长度是不一定的。 |
username | 当前用户名。 |
projects | 当前用户有权限的项目ID列表。 |
places | 当前用户有权限的点位ID例表。 |
validDate | 当前token的过期时间,请在过期前及时刷新token,旧token在获取新token后依然有效,直到过期。 |
valid | true说明用户名密码正确,false说明用户名密码不正确。 |
token存在有效期,调用后续接口的时候注意当token过期时及时更新token;socket接口仅支持单点登陆,同一用户仅能使用一个连接