Vue里搞群聊突然卡住,库选错了崩溃了,最后发现这招真能行。

boyanx2周前技术教程2


前几天想在Vue项目里加个群聊功能,结果跟想象完全不一样。以前用JQuery写过,直接连就行,现在改成Vue老是各种报错。网上看到有人说vue-native-websocket库不错,就试试看。装了才知道,光配环境就得搞清楚 Vuex 怎么对接。

先装库的时候还挺顺利,yarn add 一下就完了。到main.js里配参数时各种绕晕。什么base.lkWebSocket地址要改对,自动重连参数得设时间,store对象得关联上。中间试过三次才对,每次保存重启都得重新连服务器。

搞完配置文件才发现,消息怎么发都发不出去。打开控制台才发现sendObj写成send了,后来发现是因为用了JSON格式必须用专门的发送方法。调试了半小时才反应过来参数写反了。

页面渲染更麻烦,服务端推来的消息全是乱码。后来发现没转JSON,把data里的内容手动解析才正常显示。用户头像和ID对比这部分代码改了五遍,总有人ID对不上显示错位置。

最头疼的是消息列表存本地。开始想着简单存字符串,结果下次进来全乱了顺序。后来改成数组存对象,每次新增都push再转JSON存进去。滚动条定位问题也折腾半天,非得等DOM更新完才能调用scrollTop。

上线测试时总有人说断开连接。查了下原来是服务器超时,赶紧加了个心跳包。在vuex里设个定时器每30秒发个空消息,这才稳定下来。之前没发现这事,差点以为服务器坏了。

用了这个方案后,群里三十多人聊天也没卡。虽然第一次配时手忙脚乱,但后来发现都是参数没对齐的问题。现在回头看文档才知道,官方给的例子根本没说要改mutation参数格式。

发消息功能倒是简单,就是回车触发事件,把输入框内容打包发过去。最难弄的是表情符号,用户打/括起来的代码得替换成图片,正则表达式调了好久才匹配准。

最后页面布局倒是顺的,用v-if判断用户ID区分左右边,SVG尾巴箭头用了现成图标。样式看着一般但能用,主要功能没问题就行。反正用户也不在乎界面多好看,能发消息就行。

项目跑了一周没崩溃过,虽然偶尔延迟但自动重连起来了。最开始以为得用原生JS写,结果库自带的Vuex集成反而更省事。现在想再加个离线消息提醒,但暂时够用了,就先这样吧。

标签: jquery base64

相关文章

(完整)Vue3+Django4全新技术实战全栈项目

Vue3+Django4全新技术实战全栈项目download:https://www.666xit.com/4154/Django 4.0 发行说明这些发行说明涵盖了新功用,以及从 Django 3....

如何教你用30分钟开发一款抓取网站图片资源的浏览器插件

前言由于业务需求, 笔者要为公司开发几款实用的浏览器插件,所以大致花了一天的时间,看完了谷歌浏览器插件开发文档,在这里特地总结一下经验, 并通过一个实际案例来复盘插件开发的流程和注意事项.你将收获如何...

有了这些开源工具后,明天争取五点下班了!

前言 一个优秀的开发者,一定是会利用各种工具来提升自己的开发效率。 前段时间,博主在Gitee/Github开源了一个提升开发效率的工具,工具内集成了各种常用工具如csv、excel、ftp、文件系...

在项目中经常实用到的golang 库先收藏了

go语言中文文档:www.topgoer.com转自:https://studygolang.com/articles/28781#reply0github.com/Arafatk/DataViz  ...

HTML5 的一些小的整理吧(html5常用)

凌晨3:31家里打来电话 奶奶走了 ,可是并不能回去。用一些整理的笔记来纪念吧 虽然奶奶看不懂,如果手头有黑白的那张照片 我一定会用canvas 画一张悼词。说正题吧,主要的就是一些HTML 5 AP...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。