1. 程式人生 > >LayIM.AspNetCore Middleware 開發日記(四)主角登場(LayIM介紹)

LayIM.AspNetCore Middleware 開發日記(四)主角登場(LayIM介紹)

融雲 文檔 應該 步驟 end 想要 .sql 味道 asp.net

前言

  在前幾篇中已經初步介紹了開發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介紹)