npm package: @qians/quake_ws_client-wasm
Description: author: qians
Latest version: 1.0.22

# HChat WASM Client

author: qians

date: 2022/2/21

version: v0.3.8



## 我的元空间

- 私聊

  - 私聊对象获取

    - **get_group_members(path: String)**

      - 请求参数

        - path: 空间code

      - 返回值

        - Vec\<SpaceMemberInfo\>: 空间成员列表

          - SpaceMemberInfo: 空间成员信息

            - username

              > 用户名

            - space_nickname

              > 空间成员名备注

            - sex

              > 性别

            - birthday

              > 生日

            - region

              > 地区

            - avatar

              > 头像url

            - nickname

              > 用户昵称

  - 私聊消息

    - 获取

      **get_message(path: String,receiver: String)**

      - 请求参数

        - path: 空间code
        - receiver:消息的接收者

      - 返回值

        - BTreeSet\<Message\>: 空间中消息的列表, 按消息id顺序排列

          - Message

            - path_code

              > 空间id

            - message

              > 消息内容

            - message_id

              > 消息id

            - message_type

              > 类型

            - sender

              > 发送者

            - receiver

              > 接收者

            - timestamp

              > 时间戳

            - is_delete

              > 删除标识

    - 发送

      **send_message(path_code: String, receiver: String, typ: String, content: String)**

      - 请求参数

        - path_code: 空间code
        - receiver: 消息的接收者
        - type: 消息类型
        - content: 消息内容

      - 返回值

        - trace: 发送任务的id

        



## SDK

##### init(token: String, url: String, uuid: String, release: bool)

> 初始化client信息, 启动websocket

- 请求参数
  - token: 用户token
  - url: core服务器地址
  - uuid: 设备标识符, 用作区分同一用户的不同设备
  - release: 是否使用tls
- 返回值
  - None

##### local_task(trace: String)

> 获取空间内任务, 例如接收的新消息, 获取消息, 撤回消息, 发送消息的回复, local_task在调用back()方法离开房间时会清空, 且只会存储本空间内的任务

- 请求参数
  - trace: 任务号
- 返回值
  - task: 任务

##### system_task(trace: String)

> 获取系统任务, 例如修改空间名, 删除空间等, system_task中的任务会一直存储直至被取出

- 请求参数
  - trace: 任务号
- 返回值
  - task: 任务

##### custom_task(path_code: String, task: String)

> 获取自定义任务

- 请求参数
  - path_code: 空间id
  - task: 任务
- 返回值
  - task: 任务号

##### get_my_role(path_code: &str)

> 获取所在空间的我的权限

- 请求参数

  - path_code: 空间id

- 返回值

  - 权限：i8

    > 0：普通成员
    >
    > 1：空间管理员
    >
    > 2：空间创建者

##### get_users()

> 获取氢友氢粉

- 请求参数

  - 无

- 返回值

  - Hash\<username,UserInfo\>

    - username: 用户id

    - UserInfo: 用户头像和用户昵称

      - space_name

        > 用户昵称

      - avatar

        > 头像

##### get_user_info(usernames:&str)

> 获取用户信息

- 请求参数

  - usernames:用户名组成的Vec\<String\>，再转为JsonString

- 返回值

  - Hash\<username,UserInfo\>

    - username: 用户名

    - UserInfo:用户信息

      - birthday: 

        >  生日

      - region

        > 地区

      - sex

        > 性别
        
      - space_name

        > 空间名称

      - avatar

        > 头像

##### get_groups()

> 获取空间列表

- 请求参数

  - None

- 返回值

  - HashMap\<path_code, Group\>

    - path_code: 空间id

    - Group：空间信息以及子空间信息  spaceBaseInfo, HashMap\<path_code, Group\>

      - spaceBaseInfo: 空间基础信息

        - parent_code

          > 父空间id

        - space_name

          > 空间名

        - space_type

          > 空间类型

        - avatar

          > 空间头像url

        - is_delete
    
          > 删除标记

##### get_space_base_info(path_code: String)

> 获取空间基础信息

- 请求参数

  - path_code: 空间id

- 返回值

  - spaceBaseInfo空间基础信息

    - parent_code

      > 父空间id

    - space_name

      > 空间名

    - space_type

      > 空间类型

    - avatar

      > 空间头像url

    - is_delete

      > 删除标记

##### get_space_name(path_code: String)

> 获取空间名称

- 请求参数

  - path_code: 空间id

- 返回值

  - space_name: 空间名称

##### get_self_and_children_info(path_codes: &str)

> 获取指定空间和其下级空间的信息（头像和名称）

- 请求参数

  - path_codes: 空间id组成的Vec\<String\>，再转为JsonString

- 返回值

  - trace: 发送任务的id


##### get_group_children(root_space: String)

> 获取指定空间的子空间成员列表

- 请求参数

  - root_space: 空间id (不填默认根空间)

- 返回值

  - Vec\<SpaceBaseInfo\>:空间基础信息列表

    - SpaceBaseInfo:空间基础信息

      - space_code

        > 空间id

      - parent_code

        > 父空间id

      - space_name

        > 空间名称（有备注就是备注名）

      - space_type

        > 空间类型

      - avatar

        > 空间头像

      - is_delete

        > 删除标识

      - announcement

        > 空间公告



##### is_communication_been_established(username: String)

> 是否建立过聊天通信

- 请求参数

  - username: 用户id

- 返回值

  - 是否建立过通信

##### ask_private_chat(username: String)

> 请求私聊

- 请求参数

  - username: 用户id

- 返回值

  - 私聊空间id

##### get_group_creator(path: String)

> 获取指定空间创建者

- 请求参数

  - path: 空间id

- 返回值

  - HashMap\<username, SpaceMemberInfo\>: 空间成员列表

    - SpaceMemberInfo: 空间成员信息

      - username

        > 用户名

      - space_nickname

        > 空间成员名备注

      - sex

        > 性别

      - birthday

        > 生日

      - region

        > 地区

      - avatar

        > 头像url

      - nickname

        > 用户昵称

##### get_group_administrators(path: String)

> 获取指定空间管理员

- 请求参数

  - path: 空间id

- 返回值

  - HashMap\<username, SpaceMemberInfo\>: 空间成员列表

    - SpaceMemberInfo: 空间成员信息

      - username

        > 用户名

      - space_nickname

        > 空间成员名备注

      - sex

        > 性别

      - birthday

        > 生日

      - region

        > 地区

      - avatar

        > 头像url

      - nickname

        > 用户昵称


##### get_group_boots(path: String)

> 获取指定空间机器人列表

- 请求参数

  - path: 空间id

- 返回值

  - HashMap\<username, SpaceMemberInfo\>: 空间成员列表

    - SpaceMemberInfo: 空间成员信息

      - username

        > 用户名

      - space_nickname

        > 空间成员名备注

      - sex

        > 性别

      - birthday

        > 生日

      - region

        > 地区

      - avatar

        > 头像url

      - nickname

        > 用户昵称

##### get_group_members(path: String)

> 获取指定空间成员列表

- 请求参数

  - path: 空间id

- 返回值

  - HashMap\<username, SpaceMemberInfo\>: 空间成员列表

    - SpaceMemberInfo: 空间成员信息

      - username

        > 用户名

      - space_nickname

        > 空间成员名备注

      - sex

        > 性别

      - birthday

        > 生日

      - region

        > 地区

      - avatar

        > 头像url

      - nickname

        > 用户昵称

##### get_group_settings(path: String)

> 获取指定空间设定

- 请求参数

  - path: 空间id

- 返回值

  - SpaceSettings: 空间设置信息

    - space_nickname

      > 空间成员名备注

    - is_space_nickname_on

      > 是否显示昵称

    - space_remark

      > 空间备注

    - background_img_url

      > 背景图片url

    - del_messages

      > 屏蔽消息列表

    - shield

      > 是否屏蔽该用户

    - top_status

      > 是否置顶

##### modify_space_setting(*space_code*: String, space_nickname: String,is_space_nickname_on: String,space_remark: String,background_img_url: String,shield: String,top_status: String)

> 修改空间

- 请求参数

  - space_code: 空间id
  - space_nickname: 空间成员昵称
  - is_space_nickname_on: 是否显示昵称
  - space_remark: 空间备注
  - background_img_url: 背景图片url
  - shield: 是否屏蔽该空间
  - top_status: 是否置顶

- 返回值

  - trace: 发送任务的id


##### get_message(path: String, receiver: String)

> 获取指定空间消息, 调用此方法会将自动将该空间的最新消息设置为已读, 若离开空间请调用back()方法

- 请求参数

  - path: 空间id
  - receiver: 消息接收者(可以不填)

- 返回值

  - BTreeSet\<Message\>: 空间中消息的列表, 按消息id顺序排列

    - Message

      - path_code

        > 空间id

      - message

        > 消息内容

      - message_id

        > 消息id

      - message_type

        > 类型

      - sender

        > 发送者
      
      - receiver
      
        > 接收者
      
      - timestamp
      
        > 时间戳
      
      - is_delete
      
        > 删除标识

##### send_message(path_code: String, receiver: String, typ: String, content: String)

> 发送消息

- 请求参数
  - path_code: 空间id
  - receiver:消息接收者
  - typ:消息类型
  - content: 消息内容
- 返回值
  - trace: 发送任务的id

##### revoke_message(path_code: String, receiver: String, message_id: String)

> 撤回消息, 逻辑尚未走完, 只实现的发送部分, 推送部分代实现

- 请求参数
  - path_code: 空间id
  - receiver: 消息接收者
  - message_id: 消息id
- 返回值
  - trace: 发送任务的id

##### load_messages(path_code: String, receiver: String,  start_message_id: String, len: u32)

> 获取之前的消息, 并存储到wasm中

- 请求参数
  - path_code: 空间id
  - receiver: 消息接收者
  - start_message_id: 起始消息id
  - len: 消息数量
- 返回值
  - trace: 发送任务的id

##### get_read_num(*path_code*: String,receiver: String)

> 获取消息已读人数

- 请求参数

  - *path_code*: 空间id
  - receiver: 接收者
- 返回值

  - HashMap\<Message_id,read_num\>: 已读人数

##### unread(root: Option\<String\>)

> 获取未读消息状态

- 请求参数
  
  - root: 所在空间id，不填默认是根空间
- 返回值

  - UnreadStatus: 未读状态

    - UnreadStatus

      - children

        > 所在空间的子空间的未读消息列表

      - outside

        > 所在空间外部的未读消息列表（不包括所在位置的子空间）

      - private_chat

        > 所在的“我的元空间”的未读消息列表（即私聊未读消息列表）

##### get_del_messages(*path_code*: String)

> 获取删除消息

- 请求参数

  - *path_code*: 空间id
- 返回值

  - trace: 发送任务的id

##### delete_messages(*path_code*: String, receiver: String, *del_messages*: &str)

> 删除消息

- 请求参数

  - *path_code*: 空间id
  - receiver: 接收者
  - del_messages: 删除消息id组成的Vec\<String\>，再转为JsonString
- 返回值

  - trace: 发送任务的id

##### modify_user_info(**sex**: String, *birthday*: String, region: String)

> 修改用户信息

- 请求参数

  - *sex*: 性别
  - birthday: 生日
  - region: 地区
- 返回值

  - trace: 发送任务的id

##### create_space(space_name: String, avatar: String, parent_code: String)

> 创建域空间

- 请求参数

  - space_name: 空间名称
  - avatar: 空间头像
  - parent_code: 父空间id（填空为根空间）
- 返回值

  - trace: 发送任务的id

##### create_custom_space(space_name: String, avatar: String, parent_code: String, space_type: i8)

> 创建自定义域空间

- 请求参数

  - space_name: 空间名称
  - avatar: 空间头像
  - parent_code: 父空间id（填空为根空间）
  - space_type: 空间类型
- 返回值

  - trace: 发送任务的id

##### modify_space_base_info(*path_code*: String, **space_name**: String, **avatar**: String,)

> 修改空间信息（包括用户信息的头像和名称）

- 请求参数

  - *path_code*: 空间id（用户id）
  - space_name: 空间名称（用户名称）
  - avatar: 空间头像（用户头像）
- 返回值

  - trace: 发送任务的id

##### modify_space_setting(*path_code*: String, **space_nickname**: String, **is_space_nickname_on**: String, space_remark: String, background_img_url: String, shield: String, top_status: String)

> 修改空间设置

- 请求参数

  - *path_code*: 空间id（用户id）
  - space_nickname: 用户昵称
  - is_space_nickname_on: 是否显示用户昵称
  - space_remark: 空间备注
  - background_img_url: 背景图片url
  - shield: 是否屏蔽
  - top_status: 是否置顶
- 返回值

  - trace: 发送任务的id

##### boot_out_space_member(*path_code*: String, username: String)

> 踢出空间成员（仅限高级权限成员对低级权限成员的操作，不可踢出自己）

- 请求参数

  - *path_code*: 空间id
  - username: 被踢出的成员id
- 返回值

  - trace: 发送任务的id

##### withdraw_from_space(*path_code*: String)

> 退出空间（主动）

- 请求参数

  - *path_code*: 空间id
- 返回值

  - trace: 发送任务的id

##### set_space_member_auth(*path_code*: String, username: String, role: int8)

> 设置空间成员权限

- 请求参数

  - *path_code*: 空间id
  - username: 被设置权限人id
  - role: 权限（原则上低权限只能由高权限成员修改）
- 返回值

  - trace: 发送任务的id

##### invite(*path_code*: String, invitee: String, inviter: String, role: int8)

> 邀请

- 请求参数

  - *path_code*: 空间id
  - invitee: 被邀请者
  - inviter: 邀请者
  - role: 赋予被邀请者在空间中的身份
- 返回值

  - trace: 发送任务的id

##### link_invite(invitee: String, invitation_link_id: String)

> 链接邀请

- 请求参数

  - invitee: 被邀请者
  - invitation_link_id: 邀请链接
- 返回值

  - trace: 发送任务的id

##### review(*path_code*: String, invitee: String, reviewer: String, role: int8, status: int8)

> 审核

- 请求参数

  - *path_code*: 空间id

  - invitee: 被邀请者

  - reviewer: 审核人

  - role: 赋予被邀请者在空间中的身份

  - status: 审核状态
  
    > 0: 待审核
    >
    > 1: 通过
    >
    > 2: 拒绝
    >
    > 9: 永不通过
  
- 返回值

  - trace: 发送任务的id

##### get_invitation_list_to_be_reviewed(path_code: &str)

> 获取待审核列表

- 请求参数

  - path_code: 空间id
- 返回值

  - trace: 发送任务的id

##### back()

> 停止自动将某空间的最新消息设置为已读

- 请求参数
  - 无
- 返回值
  - 无

##### rename_path

> 暂时别调用

##### delete_path

> 暂时别调用



### 监听

#####   ExtendInfo(i64, HashMap<String, String>)

> 用户扩展信息

- 返回值
  - trace: 发送任务的id
  - extend_info: 用户扩展信息

#####   ModifyExtendInfo(i64, bool, String)

> 修改用户扩展信息

- 返回值
  - trace: 发送任务的id
  - ok: 是否修改成功 
  - username: 用户id

#####   NewExtendInfo(i64, String, ExtendInfo)

> 修改用户扩展信息

- 返回值
  - trace: 发送任务的id
  - username: 用户id
  - extend_info: 修改后的扩展信息
    - sex: 性别
    - birthday: 生日
    - region: 地区

#####   BlockUsers(i64, Vec\<String\>)

> 修改用户扩展信息

- 返回值
  - trace: 发送任务的id
  - blocked_users: 屏蔽用户信息列表

#####   CreateSpace(i64, bool, String)

> 创建域空间

- 返回值
  - trace: 发送任务的id
  - ok: 是否创建成功
  - space_code: 空间id

#####   CreateCustomSpace(i64, bool, String)

> 创建自定义域空间

- 返回值
  - trace: 发送任务的id
  - ok: 是否创建成功
  - space_code: 空间id

#####   NewSpace(i64, String, String,  String, String)

> 新域空间

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - space_name: 空间名称
  - avatar：空间头像
  - parent_code: 父空间id

#####   Spaces(i64,  HashMap<String, String>)

> 空间信息

- 返回值
  - trace: 发送任务的id
  - space:
    - space_code: 空间id
    - Space: 空间信息
      - space_name: 空间名称
      - avatar: 空间头像
      - announcement: 公告（是数组转成的字符串，需要反转义后使用）
      - parent_code: 父空间id
      - space_type: 空间类型

#####   ModifySpaceBaseInfo(i64，bool, String)

> 修改空间基础信息（用户基础信息）

- 返回值
  - trace: 发送任务的id
  - ok: 是否修改成功
  - path_code: 空间id

#####   NewSpaceBaseInfo(i64, String,  SpaceBaseInfo)

> 空间（用户）基础信息修改成功

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - SpaceBaseInfo: 修改后的空间基础信息（用户基础信息）
    - space_name: 空间名称（用户名称）
    - avatar: 空间头像（用户头像）

#####  GetSelfAndChildrenInfo(i64,  HashMap<String, String>)

> 获取指定空间与下级空间信息
>

- 返回值
  - trace: 发送任务的id
  - info: 空间信息  HashMap\<path_code,ParentAndChildren\>
    - ParentAndChildren: 
      - parents: 指定空间空间名和头像
      - children: 下级空间的空间名和头像

#####  SpacesSettings(i64,  HashMap<String, String>)

> 空间设置
>
> 这个事件在WASM初始化后会自动被SSE发送过来，wasm会继续初始化获取所有已知的空间的space_info

- 返回值
  - trace: 发送任务的id
  - space_settings: 空间设置列表
    - space_code: 空间id
    - space_setting: 空间设置

#####  ModifySpaceSetting(i64, bool, String)

> 修改空间设置

- 返回值
  - trace: 发送任务的id
  - ok: 是否修改成功
  - space_code: 空间id

#####  NewSpaceSetting(i64,  SpaceSetting)

> 空间设置修改成功

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - space_setting: 空间设置
    - space_nickname: 本人在空间中的昵称
    - is_space_nickname_on: 是否显示昵称
    - space_remark: 空间备注
    - background_img_url: 背景图片
    - shield: 是否屏蔽
    - top_status: 是否置顶

#####  SpacesMembers(i64, String,  HashMap<String, String>)

> 空间成员

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - space_members: 空间成员列表
    - space_code: 空间id
    - space_member: 空间成员信息

#####  BootOutSpaceMember(i64, bool, String,  String)

> 踢出成员

- 返回值
  - trace: 发送任务的id
  - ok: 是否踢出成功
  - space_code: 空间id
  - username: 空间成员id

#####  WithDrawFromSpace(i64, bool, String)

> 主动退出空间

- 返回值
  - trace: 发送任务的id
  - ok: 是否退出成功
  - space_code: 空间id

##### NewCreator(i64, String,  String)

> 新群主

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - new_creator: 新群主id

#####  MemberWithdrawal(i64, String,  String)

> 成员退出空间

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - username: 退出空间的成员id

#####  SetSpaceMemberAuth(i64, bool, String,  String)

> 设置成员权限

- 返回值
  - trace: 发送任务的id
  - ok: 是否设置成功
  - space_code: 空间id
  - username: 被设置权限人id

#####  NewSpaceMemberAuth(i64, String, String,  int8)

> 成员权限变动

- 返回值

  - trace: 发送任务的id

  - space_code: 空间id

  - username: 被设置权限人id

  - reviewer: 设置权限人id

  - role: 成员权限
  
    > 0：普通成员
    >
    > 1：空间管理员
    >
    > 2：空间创建者

#####  Invite(i64, String,  String, String)

> 邀请

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - invitee: 被邀请者
  - inviter: 邀请者

#####  Review(i64, String,  String, String, int8)

> 审核

- 返回值

  - trace: 发送任务的id

  - space_code: 空间id

  - invitee: 被邀请者

  - reviewer: 审核人

  - status: 审核状态

    > 0: 待审核
    >
    > 1: 通过
    >
    > 2: 拒绝
    >
    > 9: 永不通过

#####  NewMember(i64, String,  String)

> 新成员加入

- 返回值
  - trace: 发送任务的id
  - space_code: 空间id
  - username: 新成员id

#####  GetInvitationList(i64, String)

> 获取邀请列表

- 返回值
  - trace: 发送任务的id
  - invitation_list: 邀请列表

#####  Message(i64, String, Message)

> 接收新消息（自己发的也会触发）

- 返回值
  - trace: 发送任务的id
  - invitation_list: 邀请信息

#####  NewMessage(i64, bool, String)

> 发送消息

- 返回值
  - trace: 发送任务的id
  - ok: 是否发送成功
  - path_code: 空间id

#####  RevokeMessage(i64, String, String, String)

> 撤回消息

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - receiver: 接收者
  - message_id: 消息id

#####  LatestMessages(i64, String, String, Vec\<Message\>)

> 获取最新消息

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - receiver: 接收者
  - messages: 消息列表

#####  GetMessages(i64, String, String, Vec\<Message\>)

> 获取历史消息

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - receiver: 接收者
  - messages: 消息列表

#####  Read(i64, bool)

> 读消息

- 返回值
  - trace: 发送任务的id
  - ok: 消息是否已读

#####  ReadNum(i64, String, String, HashMap\<String,u32\>)

> 消息被读人数

- 返回值
  - trace: 发送任务的id
  - path_code:  空间id
  - receiver: 接收者id
  - read_num:
    - message_id: 消息id
    - num: 被读人数

#####  UnreadStatus(i64,  HashMap<String, HashMap<String, String>>)

> 未读状态

- 返回值
  - trace: 发送任务的id
  - status: 未读状态

#####  GetDelMessage(i64, String, Vec\<String\>)

> 获取删除消息

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - message_id: 删除消息id

#####  AddDelMessage(i64, bool, String, String, String, HashMap<String, String>)

> 删除消息

- 返回值
  - trace: 发送任务的id
  - ok: 是否删除成功
  - username: 删除者
  - path_code: 空间id
  - receiver: 接收者
  - del_messages: 删除消息id

#####  Custom(i64,  String, String, String, String)

> 自定义任务

- 返回值
  - trace: 发送任务的id
  - path_code: 空间id
  - receiver: 接收者
  - content: 内容
  - sender: 发送者

##### Err(i64,  String)

> 错误

- 返回值
  - trace: 发送任务的id
  - error: 错误信息

##### Disconnected(i64)

> 断开连接

- 返回值
  - trace: 不和任何有效数据捆绑的trace_id，仅作标记