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介绍)的更多相关文章
- LayIM.AspNetCore Middleware 开发日记(一)闲言碎语
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把La ...
- LayIM.AspNetCore Middleware 开发日记(三)基础框架搭建
前言 在上一篇中简单讲了一些基础知识,例如Asp.Net Core Middleware 的使用,DI的简单使用以及嵌入式资源的使用方法等.本篇就是结合基础知识来构建一个基础框架出来. 那么框架有什么 ...
- LayIM.AspNetCore Middleware 开发日记(五)Init接口实现细节
前言 “一旦开始了就要坚持下去“.为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇 ...
- LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍
前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...
- LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装
前言 距离上一篇博客竟然已经10多天了...工作上的事,个人原因,种种吧.不多说废话,本文将会重点介绍layim的入口配置. LayIM配置 其实在开发者文档里面已经描述的很清楚了.除了几个重要的接口 ...
- LayIM.AspNetCore Middleware 开发日记(七)Asp.Net.Core.SignalR闪亮登场
前言 前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了, ...
- Android UI开发第四十篇——ScrollTricks介绍
ScrollTricks是一个开源控件,实现了两个简单功能: 1.Quick Return:向上滑动时,View也向上滑动并且消失,当向下滑动时,View马上出现.例如Google Now的搜索功能. ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
随机推荐
- [javaSE] GUI(鼠标事件)
调用Button对象的addMouseListener方法,参数:MouseListener对象,这个类是个接口,需要实现以下方法 mouseClicked mousePressed mouseRel ...
- 五、standalone运行模式
在上文中我们知道spark的集群主要有三种运行模式standalone.yarn.mesos,其中常被使用的是standalone和yarn,本文了解一下什么是standalone运行模式,它的运行流 ...
- 动态页面技术之JSP
1.什么是JSP技术 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起 ...
- mysql update/delete in 子查询改写
#子查询(不支持) limit ,); #改写 limit ,) t ; #子查询(不支持) delete from `user` where id in ( ) ); #改写 delete from ...
- Git基础--笔记
0.取的项目的git仓库 有两种取得 Git 项目仓库的方法.第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库. 第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来 1.在工作目录 ...
- UNIX IPC: POSIX 消息队列
首先在我的MAC OSX上试了一下虽然有_POSIX_MESSAGE_PASSING的宏定义,但是用gcc编译会提示没有mqueue.h头文件,先放一边.在Ubuntu上使用正常,不过POSIX消息队 ...
- 02.CSS动画示例-->鼠标悬停图片旋转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MapReduce两种执行环境介绍:本地测试环境,服务器环境
本地测试环境(windows):1.在windows下配置hadoop的环境变量2.拷贝debug工具(winutils.exe)到hadoop目录中的bin目录,注意winutils.exe的版本要 ...
- Android 图片旋转
拍照后的照片有时被系统旋转,纠正步骤如下: 1.先读取图片文件被旋转的角度: /** * 通过ExifInterface类读取图片文件的被旋转角度 * @param path : 图片文件的路径 * ...
- Java快速入门-04-Java.util包简单总结
学Java的程序员,lang包和util包最好是要过一遍的. 建议大家都序下载一个离线版开发文档,查阅非常方便,我给大家提供一个中文版 jdk1.8 离线文档,查看:JAVA - JDK 1.8 AP ...