LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装
前言
距离上一篇博客竟然已经10多天了。。。工作上的事,个人原因,种种吧。不多说废话,本文将会重点介绍layim的入口配置。
LayIM配置
其实在开发者文档里面已经描述的很清楚了。除了几个重要的接口配置,剩下的就是其他可选配置项了。

在普通的对接当中,这些配置都是直接写到页面中的,例如官网给出的例子:

由于在 LayIM.AspNetCore 项目中,为了实现前端的最简单对接。所以我将配置项目做到后台中了。为什么这么做呢?我的初衷就是后端可通过读取配置文件或者硬编码的形式更改LayIM配置,这样,前端如果多个页面引用了LayIM,那么就不用大费周折的去更改配置了。
配置示例
就拿上图中的 isgroup 做示例吧。 isgroup:true 开启群组 false 关闭群组 那么在后台就可以这么配置。

带群组的效果如下:

我们在改一下配置:

效果如下,可以看到群组图标就消失了

原理讲解
原理其实很简单,无非就是将前端的配置改为后端配置,然后通过一个接口读取配置数据,然后封装成layim可用的配置数据供layim调用即可。所以,这个项目的入口就是 /layim/config 。通过前面几篇博客有关路由的介绍,这里不在赘述获取配置接口是如何实现的。我们这里分析一下配置接口返回的数据:

- api 就是layim常用的接口部分,即在Routes中注册的接口,也是默认对LayIM实现的接口
- config 用于layim.config 方法调用的参数,不过这个config不是标准的配置,所以需要在js中做一些转换。
- extend 自定义的layui插件
- other 其他配置,例如是否客服模式,是否保存消息,是否开启前端日志
- uid 当前用户ID
嵌入文件在之前的博客中也有介绍过,在此不在过多的介绍。在项目的Resources文件夹中有两个最重要的js。 init.js 和socket.js
init.js 通过调用 /layim/config 接口,然后通过调用 socket.start 方法进行初始化
layui.use('jquery', function () {
var $ = layui.jquery;
$(function () {
var callback = function (conf) {
layui.extend(conf.extend);
layui.use(conf.extend.init, function (socket) {
socket.start(conf);
});
}
var config = layui.data('layim_global')['config'];
if (config) {
callback(config);
}
$.get('/layim/config', function (conf) {
layui.data('layim_global', {
key: 'config',
value: conf
});
if (!config) {
callback(conf);
}
});
});
});
socket.js 是核心业务代码部分了,包含对 config 的解析,封装【layim】的调用,封装【融云通信】的调用。当然这个js目前还是耦合度比较高的,后期在用Asp.Net.Core.SignalR实现的时候会将js业务也进行接口化,以用来支持多种 通信Server端。用更通俗的语言方式就是,定义一套发送消息,接收消息的接口,各种websocket服务实现该接口即可。无论是第三方类似融云还是说自己写Websocket服务,能达到随时切换效果。
总结
本篇介绍了LayIM的相关配置信息,以及配置迁移到后台的做法。另外项目对LayIM做了高度封装,但又不失灵活性。当然目的也是在此。不过由于技术问题,项目中还是有很多坑的。没关系,慢慢来吧。
博客预告:LayIM.AspNetCore Middleware 开发日记(七)不想用融云?试试Asp.Net.Core.SignalR吧
项目地址:https://github.com/fanpan26/LayIM.AspNetCore 欢迎小伙伴们star 围观 提意见。
LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装的更多相关文章
- LayIM.AspNetCore Middleware 开发日记(一)闲言碎语
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把La ...
- LayIM.AspNetCore Middleware 开发日记(五)Init接口实现细节
前言 “一旦开始了就要坚持下去“.为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇 ...
- LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍
前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...
- LayIM.AspNetCore Middleware 开发日记(三)基础框架搭建
前言 在上一篇中简单讲了一些基础知识,例如Asp.Net Core Middleware 的使用,DI的简单使用以及嵌入式资源的使用方法等.本篇就是结合基础知识来构建一个基础框架出来. 那么框架有什么 ...
- LayIM.AspNetCore Middleware 开发日记(四)主角登场(LayIM介绍)
前言 在前几篇中已经初步介绍了开发AspNetCore中间件的一些基础知识,不过都没有很深入的去研究,后续还是需要去看看源码.本篇呢,终于有点开头的味道了,就是要介绍LayIM了,其实标题写的是主角, ...
- LayIM.AspNetCore Middleware 开发日记(七)Asp.Net.Core.SignalR闪亮登场
前言 前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了, ...
- 【Android开发日记】之入门篇(六)——Android四大组件之Broadcast Receiver
广播接受者是作为系统的监听者存在着的,它可以监听系统或系统中其他应用发生的事件来做出响应.如设备开机时,应用要检查数据的变化状况,此时就可以通过广播来把消息通知给用户.又如网络状态改变时,电量变化时都 ...
- oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
0 前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...
- 【Android开发日记】之入门篇(八)——Android数据存储(下)
废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...
随机推荐
- C#操作xml文件:使用XmlDocument 实现读取和写入
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
- Hive & SparkSQL 比较
Hive 在 Hadoop 集群上所有数据的访问都是通过 Java 编写的 MapReduce 作业来完成的,这些让 Java 程序员来完成没有问题. 但是对 SQL 程序员来说,写 MapRedu ...
- windows 下运行 tomcat
本节是以 tomcat 7.0 为例,描述在 windows 系统上从下载到运行 tomcat 的步骤 https://tomcat.apache.org/download-70.cgi 下载后解压缩 ...
- Spring_Spring与DAO_Spring的事务管理
一.Spring的事务管理 在Spring中通常可以通过以下三种方式来实现对事务的管理: 使用Spring的事务代理工厂管理事务 使用Spring的事务注解管理事务 使用AspectJ的AOP配置管理 ...
- 由上一个血案引发的关于property和attribute关系的思考
boss说,学习要刨根问底. 好的,开刨. 一.property和attribute在英语里有什么区别 看似没有区别.但其实大神说: property是 物体本身自带属性,不能改变的(一旦改了就是另外 ...
- Maven学习总结(五):maven命令的含义及用法
Maven有许多命令,不管是在命令行(1),还是在Myecplise10的Maven项目--右键Run As(2),还是IDEA的左下角--Maven Projects--Maven项目名--Life ...
- 用CSS3 & jQuery创建apple TV海报视差效果
用CSS和jQuery来实现它,尽量看起来和原效果一样. 最终效果图 本教程里,我将使用CSS,HTML和jQuery来创建一个近似Apple TV视差效果,如果你正在阅读,我假设你对上述三种技术都有 ...
- bootstrap Table的使用方法
1.官网 url:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/ 文档包含了表格属性.列属性.事件.方法等等. 2.引入库 只 ...
- UTF-8和GBK编码转换iconv
iconv("GBK", "UTF-8", $str);//将GBK编码转换成UTF8编码
- java (Eclipse)连接MySQL数据库
package com.ifruit.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...