菜单
Socket数据接口 > API Reference > 登陆
登陆 最近更新时间:2020-10-20 10:31:13

# 流程描述

本流程为客户端向数据服务器发送登陆包,获取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
    }

# 响应参数

参数名称说明
httpcode200-正常,401-无权限,500-其他错误。
token用于后续请求的权限验证,注意token长度是不一定的。
username当前用户名。
projects当前用户有权限的项目ID列表。
places当前用户有权限的点位ID例表。
validDate当前token的过期时间,请在过期前及时刷新token,旧token在获取新token后依然有效,直到过期。
validtrue说明用户名密码正确,false说明用户名密码不正确。

token存在有效期,调用后续接口的时候注意当token过期时及时更新token;socket接口仅支持单点登陆,同一用户仅能使用一个连接