Skip to content

Latest commit

 

History

History
90 lines (75 loc) · 3.29 KB

客户端登录.md

File metadata and controls

90 lines (75 loc) · 3.29 KB

登录

步骤一:服务端生成登录凭证

登录凭证是由 用户ID、时间戳和应用ID三个部分构成的JSON字符串,具体如下:

名称 字段名 类型
用户ID id string
秒时间戳 timestamp int
应用ID appid string

注意,用户ID的类型是 string,如果你平台的用户ID是其它类型的话需要转为字符串的格式

用户ID在 v_socket 里只是一段字符串,程序内部根据 应用ID + 用户ID 的方式来做唯一标识,业务平台完全不需要修改自己的用户注册流程

取得生成用户凭证所需要的数据后,我们得到一段类似以下所示的字符串(注意字段顺序):

{"id": "10010","timestamp": 1676880528,"appid": "e2d043bd63569d0b06e4a63049bd3fac"}

使用【应用公钥】将这段字符串加密取得登录凭证,最终你需要将【登录凭证】返回给前端,由前端发起WebSocket连接请求。

步骤二:前端连接服务

如果前端项目可以使用JS,推荐使用 @vshen/v-socket-js-sdk 来简化你的操作

使用SDK

  • 安装 sdk
npm install @vshen/v-socket-js-sdk --save
  • 使用SDK
import VSocket from '@vshen/v-socket-js-sdk/VSocket'
// 后端部署的 v_socket 服务
const server = 'wss//127.0.0.1:30000'
// 步骤一所使用的应用ID
const appid = "e2d043bd63569d0b06e4a63049bd3fac"
// 步骤一返回的登录凭证
const password = "String"

let instance = new VSocket()
// 发起登录请求
instance.login(server, appid, password)
// 监听登录成功事件
instance.onLoginSuccess(res => {
    console.log("登录成功",res)
})
// 监听消息事件
instance.onReceive(message => {
    console.log('收到新消息', message)
    // 你也可以发送JSON字符串,然后在这里反序列化后使用
    // message = JSON.parse(message)
})

想查阅SDK更多细节可点击 这里

不使用SDK

若你无法使用JS SDK,你可以自行实现前端登录和获取消息

首先发送登录请求所需要的数据如下:

名称 字段名 类型
操作 action string
数据 data object
应用ID data.appid string
登录凭证 data.password string

action 字段固定传 login,登录凭证请使用步骤一服务端返回的数据

  • 例如:
{"action": "login","data": {"appid": "e2d043bd63569d0b06e4a63049bd3fac","password": "String"}}

使用该字符串对发起WebSocket请求,并监听服务返回的数据,一般来讲,服务返回的数据格式如下:

名称 字段名 类型
类型 type string
消息 message string

其中 message 是消息体,type 是消息类型,你需要根据消息类型来做不同的响应,消息类型可能的值如下:

类型
登录成功 LOGON
新消息 RECEIVED
连接断开 CLOSED
连接失败 CONNECT_FAIL

message 只支持字符串格式,如果你有其它格式需求(比如JSON),可以先转成字符串的格式,再在客户端转为JSON