LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装

前言

  距离上一篇博客居然已经10多天了。。。工做上的事,我的缘由,种种吧。很少说废话,本文将会重点介绍layim的入口配置。前端

LayIM配置

  其实在开发者文档里面已经描述的很清楚了。除了几个重要的接口配置,剩下的就是其余可选配置项了。jquery

  

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

  

  因为在 LayIM.AspNetCore 项目中,为了实现前端的最简单对接。因此我将配置项目作到后台中了。为何这么作呢?个人初衷就是后端可经过读取配置文件或者硬编码的形式更改LayIM配置,这样,前端若是多个页面引用了LayIM,那么就不用大费周折的去更改配置了。github

配置示例

  就拿上图中的 isgroup 作示例吧。 isgroup:true 开启群组 false 关闭群组 那么在后台就能够这么配置。web

  

  带群组的效果以下:后端

  

  咱们在改一下配置:api

  

  效果以下,能够看到群组图标就消失了websocket

  

原理讲解

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

  

  • api 就是layim经常使用的接口部分,即在Routes中注册的接口,也是默认对LayIM实现的接口
  • config 用于layim.config 方法调用的参数,不过这个config不是标准的配置,因此须要在js中作一些转换。
  • extend 自定义的layui插件
  • other 其余配置,例如是否客服模式,是否保存消息,是否开启前端日志
  • uid 当前用户ID

  嵌入文件在以前的博客中也有介绍过,在此不在过多的介绍。在项目的Resources文件夹中有两个最重要的js。 init.jssocket.jsui

  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 围观 提意见。

相关文章
相关标签/搜索