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 會讓此對象根據請求為當前用戶提供已簽名的令牌。