LayIM.AspNetCore Middleware 開發日記(四)主角登場(LayIM介紹)
前言
在前幾篇中已經初步介紹了開發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 圍觀 提意見。
LayIM.AspNetCore Middleware 開發日記(四)主角登場(LayIM介紹)