距離上一篇博客居然已經10多天了。。。工做上的事,我的緣由,種種吧。很少說廢話,本文將會重點介紹layim的入口配置。前端
其實在開發者文檔裏面已經描述的很清楚了。除了幾個重要的接口配置,剩下的就是其餘可選配置項了。jquery
在普通的對接當中,這些配置都是直接寫到頁面中的,例如官網給出的例子:git
因爲在 LayIM.AspNetCore 項目中,爲了實現前端的最簡單對接。因此我將配置項目作到後臺中了。爲何這麼作呢?個人初衷就是後端可經過讀取配置文件或者硬編碼的形式更改LayIM配置,這樣,前端若是多個頁面引用了LayIM,那麼就不用大費周折的去更改配置了。github
就拿上圖中的 isgroup 作示例吧。 isgroup:true 開啓羣組 false 關閉羣組 那麼在後臺就能夠這麼配置。web
帶羣組的效果以下:後端
咱們在改一下配置:api
效果以下,能夠看到羣組圖標就消失了websocket
原理其實很簡單,無非就是將前端的配置改成後端配置,而後經過一個接口讀取配置數據,而後封裝成layim可用的配置數據供layim調用便可。因此,這個項目的入口就是 /layim/config 。經過前面幾篇博客有關路由的介紹,這裏不在贅述獲取配置接口是如何實現的。咱們這裏分析一下配置接口返回的數據:socket
嵌入文件在以前的博客中也有介紹過,在此不在過多的介紹。在項目的Resources文件夾中有兩個最重要的js。 init.js 和socket.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 圍觀 提意見。