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 圍觀 提意見。

相關文章
相關標籤/搜索