网易云通信小程序集成实践+群组功能完善

在微信里放一个IM,被指定放网易云通信。这次实践是一场非常虐心的体验,虽然集成网易云通信有官方资料参考,也有官方的demo参考,但是踩的坑也不少。

一、不完全是技术问题

消息漫游需要联系商务开通

二、官方小程序demo更加一个独立的app

demo 过于独立,没有考虑到在小程序中集成互通。找到官方demo的时候很开心,用的时候还是很不开心的。不过,出于谋生考虑,硬着头皮在官方的demo上做了调整。

引用自己Github上的说明:

  • – 1.没有与小程序帐号集成。 这个本人在实际项目中已经解决。
    – 2.消息通道初始化问题。 由于官方没有与微信帐号集成,这个初始化问题也是存在的。正确的初始化位置,应当在app.js中完成。目前项目上已经改造好了,除了将初始化移到app.js,还写了一个【消息回放功能】,因为用户进入小程序后,是到首页,消息tab并没有点击,离线的消息与未点消息tab之前的时间窗口消息都需要给消息tab页。app.js中要订阅消息,有消息时要将消息tab打上小红点。
    – 3.群聊功能的缺失.已解决。
    解决思路:直接在官方的代码基础上,改造一下消息订阅,消息发送、消息显示。优雅的处理方式:在原官方的代码基础上,增加一个msgType标明是哪种消息,然后在后续消息显示、发送逻辑上区别对待。
    消息订阅:官方直接将群组消息team消息忽略掉了,因此,需要写一个逻辑分支,p2p消息处理沿用原逻辑,team消息走新逻辑。
    消息发送:发送代码很好改造,基本上将类型从p2p修改成team
    消息显示:复制一份单聊chating代码取名为groupchating,在recentchat会话列表上做逻辑分支,群聊定向到groupchating.群聊头像需要人肉构建。后记:单聊、群聊本身可以抽象为一种实现,但是目前官方的demo明显倾向于单聊,群聊无法直接使用。

Fork了官方的demo打算把本次项目代码清洗一下,放到github上,也算是为后来人提供一份网易云通信小程序集成的参考。可以关注github工程地址,回头会更新!

https://github.com/Lancker/NIM_Web_Weapp_Demo

欢迎加微信交流 13439975582

转载请注明来自 技术岛 http://www.jishudao.com 附具体链接

网易云通信小程序集成实践+群组功能完善

与小伙伴相约

 

https://licaishi.app 优化实战记 页面秒开的点点滴滴

https://licaishi.app 是一款理财师APP应用软件!优化项目的目标是秒开,即1秒内打开页面!未优化之前存在页面加载时间长,很多用户反馈慢!而服务器的负载很低,网络带宽不到10%,cpu\内存也都在10%以下。

优化思路一:

以最快的速度打开页面,秒开是前提在网速正常的情况下,因此网络因素造成不秒开不在本次优化的范围内。将页面的所有数据加载行为去掉,纯静态资源的形式下查看所需的毫秒数,40毫秒,也就是优化的极限在40毫秒。但是优化也是有成本的,需要将页面数据加载拆分出来,在1秒的忍受时长里,将耗时上的数据行为拆出来。等页面加载完之后,异步请求加载。让人以最快的速度看到页面。

优化思路二:

不经常变的数据使用localstorage直接存在浏览器的本地存储里,这样子,页面加载完之后,可以很快的呈现数据,在实时与体验速度上做了一下平衡。先呈现本地存储数据中的。再请求远程的,如果数据变了,则刷新本地存储与页面,如果数据未变,则无需做任何调整。这样子,客服不仅以最快的速度看到了页面,还以最快的速度看到了数据。

优化思路三:

将服务器从静态资源服务中解脱出来,目前采用的方案是CDN,为了防止出现打广告的嫌疑,就不说产品名称了。从实施的效果上来讲,还是不错的。基本上服务器的带宽、资源使用都降了下来,CDN搞住了流量,而且本身的速度也由于CDN的节点多而方法得到了提升。如果不是特别有实力,感觉用第三方的CDN是不错的。省去了自己搭建CDN.

优化思路四:

服务器的内存多,直接将内存挂载成一个目录,将站点文件全部同步到这个特殊的内存目录,也就意思着所有的文件读取都在内存中完成。由于上传的图片在内存中,则会丢失,所以要写脚本同步。

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
file=”/www/wwwroot/memory.licaishi.app/index.php”
if [ -f “$file” ]
then
echo “$file found.”
else
echo “$file not found.”
echo “let’s recover memory files”
cp -r /www/wwwroot/licaishi.app/. /www/wwwroot/memory.licaishi.app
fi

echo “—————————————————————————-”
endDate=`date +”%Y-%m-%d %H:%M:%S”`
echo “★[$endDate] Successful”
echo “—————————————————————————-”

图片同步至硬盘脚本

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo ‘同步图片’
cp -n /www/wwwroot/memory.licaishi.app/upload_file/. /www/wwwroot/licaishi.app/upload_file
echo “—————————————————————————-”
endDate=`date +”%Y-%m-%d %H:%M:%S”`
echo “★[$endDate] Successful”
echo “—————————————————————————-”

从内存中运行站点文件的好处,响应比较稳定。

经过优化之后,页面速度明显得到改善!

2018.05.18 投屏抽奖Bug分析与处理

错误提示信息:

执行命令定义时出错。有关详细信息,请参阅内部异常。

执行超时已过期。完成操作之前已超时或服务器未响应。

将LINQ生成的SQL放到数据库中执行,耗时1分钟左右

处理:对在线设备表建立索引,重新执行SQL,1秒内执行完成!

本地模拟环境测试,功能恢复正常。

问题产生原因分析与处理方案:

随着【在线设备表】记录增长,原LINQ生成的SQL语句执行效率低。这也印证了,原系统使用上并没有问题,而一个月之后出现了问题。当前处理方案为建立索引。

后记:LINQ虽然简化了代码量,也潜伏了不可控因素。

世界,您好!欢迎来到技术岛!

技术岛是一个修炼技术的互联网小岛!岛民必须是互联网IT技术相关从业人员!分享技术心得!技术岛的分为主题包涵云计算、移动开发、小程序开发、产品、设计,让互联网IT从事人员深入交流!

技术岛做为一个内容输出与整理平台,我们鼓励岛民发布原创文章,能从专业角度介绍相关技术!对于转载文章,必须尊重原创博主,标出转截来源!转截文章请附上简要点评!

对于优秀的内容输出小伙伴,不仅能获取技术岛推荐,还有机会获得红包鼓励!

技术岛微信交流群,请加 13439975582 拉入群!