前言
在前幾篇中已經初步介紹了開發AspNetCore中介軟體的一些基礎知識,不過都沒有很深入的去研究,後續還是需要去看看原始碼。本篇呢,終於有點開頭的味道了,就是要介紹LayIM了,其實標題寫的是主角,其實由於我已經多次對接過LayIM的開發,所以這次的主角應該是Asp.Net Core,不過技術沒有好壞之分,合起來才能完美。本篇對於LayIM只是做簡單介紹,想了解詳情的小夥伴可以去官網檢視.
LayIM簡介
我覺得再多的語言也不如一張圖來的實在。
LayIM常用介面介紹
layim.config 是它初始化的一個方法,也是傳入配置引數的一個方法。這個方法是LayIM的入口。
在config中的比較重要的引數有:
init:{url:'/layim/init'} 主頁面就是通過這個方法獲取的資料進行載入的,也就是上圖中最右側的主皮膚
members:{url:'/layim/members'} 這個方法就是獲取群員的一個方法
uploadImage/uploadFile 是否開啟聊天框中傳送圖片和檔案的功能
瞭解並且會使用以上幾個基本配置,基本LayIM主介面就出來了。更多配置還是希望大家去看一下文件。
layim.on 事件監聽
ready LayIM初始化之後呼叫
sendMessage LayIM傳送訊息之後呼叫
更多實用方法:
與中介軟體對接
很多小夥伴在瞭解到LayIM的時候,以為它就是可以直接拿來使用的,然而它需要後端的配合來實現基本的推送功能,那麼LayIM才算完美。所以呢,接下來的業務開發基本上都是圍繞著LayIM的介面進行的。比如最常用也是最基本必須要實現的 init 介面(獲取基本資料,使用者資訊,好友資訊,群組資訊等)。下面我以 init 介面為例,介紹一下中介軟體中的開發步驟。
首先,它是一個QueryCommand.所以在路由中,我們要註冊該方法。
//layim初始化介面 routes.AddQueryCommand("/init", async context => { return "基礎資料資訊"; });
這樣,我們前端呼叫 layim/init 的時候就會匹配到這個方法上了。
當然為了解耦,我們還是採用之前文章中介紹的那樣,使用依賴注入去實現。比如,定義如下介面:
public interface ILayIMStorage { /// <summary> /// 初始化資料 /// </summary> /// <param name="userId"></param> /// <returns></returns> Task<LayIMInitModel> GetInitData(string userId); }
目前我這裡是用SqlServer去實現,使用Dapper作為ORM框架。實現類定義如下:
public class LayIMDapperStorage : ILayIMStorage { //實現介面 }
然後在服務中去註冊 LayIMDapperStorage
/// <summary> /// 使用SqlServer /// </summary> /// <param name="services"></param> /// <param name="setConfig"></param> public static IServiceCollection AddSqlServer(this IServiceCollection services,string connectionString) { var dbConfig = new DBConnectionConfig(DBType.SqlServer); dbConfig.ConnectionString = connectionString; services.AddSingleton(dbConfig); services.AddSingleton<ILayIMStorage, LayIMDapperStorage>(); return services; }
上述程式碼擴充套件了IServiceCollection,新增了AddSqlServer的方法。那麼由於作為Demo演示和預設實現,我採用了融雲和SqlServer,所以在Demo中是這麼呼叫的:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddLayIM() .AddRongCloud(config => { config.AppKey = "appkey"; config.AppSecret = "appsecret"; }) .AddSqlServer("connectionString"); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //使用LayIM app.UseLayIM(); //其他程式碼 }
後續會將上述中的程式碼詳細講解,本篇只是作為思路演示。
DEMO演示
首先在資料庫中加入一些樣例資料。啟動Web專案。先模擬登入:http://localhost:56304/account/?uid=1,登入成功之後會跳轉到主頁面,前端列印日誌如下:
上圖中可以看到一個配置資訊,這個配置資訊是從後臺載入的,我把LayIM的部分引數放入了後臺去配置。也就是說專案啟動的時候去配置的。配置入口就在 app.UseLayIM中,稍後為稍微講解一下,下面繼續看執行效果截圖:
大家注意紅框的地方,那麼如果不想要這兩個紅框怎麼辦?在配置(檔案)中改一下即可:
app.UseLayIM(options => { options.UIConfig.UseUploadFile = false; options.UIConfig.UseUploadImage = false; });
總結
本篇對LayIM做了一個簡單的介紹,和一個demo的基本演示。本篇到此就結束啦。拜拜~~
部落格預告:LayIM.AspNetCore Middleware 開發日記(五)Init介面實現細節
專案地址:https://github.com/fanpan26/LayIM.AspNetCore (本文程式碼對應 layim 分支或者直接檢視master)歡迎小夥伴們star 圍觀 提意見。