Chatkit 是一个免费而且开源的UI聊天组件,它的最大特点是把聊天常用的一些功能配合 UI 一起提供给开发者,帮助开发者轻松实现聊天功能。同时它提供完全自由的授权协议,支持二次开发。

Chatkit 中重点完成了「最近联系人列表」和「聊天界面」这两个页面。「最近联系人列表」中需要有许多数据是需要实时更新的,而「聊天界面」则需要对 LeanCloud 的实时通信接口比较熟悉,这两个页面开发的完成显然可以节省开发者相当多的精力。开发完成的效果如下:

Chatkit 同时也支持相当多的自定义区域,比如说输入框的底部插件,文字的颜色,额外区域等等,甚至可以实现红包这样的需求。

Chatkit——角色与权限

角色:

一旦 Chatkit 认证用户的请求并验证其身份,它就必须决定该用户是否有权执行请求的操作。这是角色和权限过程进入的地方。

用户被分配角色,其中包含一组权限,描述他们可以做什么和不可以做什么。Chatkit 将在执行请求的操作之前检查用户的角色。Chatkit 允许你在你的 Chatkit 实例中定义一组角色。角色可以适用于特定的房间,也可以在全局范围内使用,也就是说它适用于实例级别的角色。

权限:

根据某个角色是作用于单个房间还是全局,它可以具有与其相关的不同权限。

如果你正在创建一个全局作用域角色,那么这些是你可以添加到它的权限:

  • room:join - 用户可以加入任何公共场所
  • room:leave - 用户可以离开任何房间
  • room:members:add - 用户可以将新成员添加到任何房间

如果你正在创建一个房间范围的角色,那么这些是你可以添加到它的权限:

  • room:join - 用户可以加入房间(只要是公共房间)
  • room:leave - 用户可以离开房间
  • room:members:add - 用户可以向房间添加新成员

例如:

sarah 是id 为123房间的成员,想添加一个信息到这个房间

Chatkit 服务器检查是否有任何角色已分配给具有 ID 的用户 sarah。分配给全局范围的角色 sarah 在创建用户后并未更新,也没有任何与这个房间有关的角色被分配到这个 id。 sarah 123;

因此,sarah 分配给她的唯一角色是 default 即一个一般的角色。然后,Chatkit 服务器检查它是否有创建信息的权限;

该角色确实有权限,因此她的消息被添加到了房间中。

Chatkit 核心思想

1,设置:

Chatkit:你的客户将连接到他们的聊天功能的推送服务。

客户:你的许多用户喜欢他们的新聊天功能。

服务器:用于客户端请求身份验证令牌并向 Chatkit 发出管理请求。

以用户为中心的聊天

客户端和 Chatkit 服务器之间的所有交互都是通过连接的用户执行的。实际上这意味着:

1.发送消息实际上是连接的用户向房间添加消息

2.用户应订阅房间以接收来自该房间的新消息

3.应该是一个用户加入一个房间,而不是指定一个房间添加一个用户

聊天管理器

所有客户端 SDK 都包含聊天管理器的概念。此聊天管理器将成为你与Chatkit 交互的入口点。这是你需要用你的 Chatkit ID 和令牌提供程序进行初始化的对象。创建聊天管理器后,你将使用它来将设备连接到Chatkit 服务器。

令牌提供者

这个包含两个组成部分:

1.令牌提供者端点是你在服务器上公开的服务。它针对你自己的系统请求进行身份验证,并使用已经签名的令牌对用户身份进行响应。

2.令牌提供者对象(PPTokenProvider)是你实现并传递给 SDK 的组件。它负责查询你的令牌提供程序端点,提供你用来验证的信息,并通过标准化接口将其返回到 Chatkit SDK。

总之,你向 SDK 提供了一个令牌提供者对象。SDK 会让此对象根据请求为当前用户提供已签名的令牌。