基于vue和websocket的多人在线聊天室


Posted in Javascript onFebruary 01, 2020

最近看到一些关于websocket的东西,就决定写一个在线聊天室尝试一下。最终决定配合vue来写,采用了官方的vue脚手架vue-cli和官方的router,在本例中呢,我是用了CHAT这个对象来存储app的数据的,但后来一想,虽然项目很小,但如果用官方的vuex会更好,方便以后扩展,比如可以加上私信功能,可以在对方不在线的时候缓存发送的消息,这些都是可以的。(现在比较尴尬的就是,我把聊天室写好放到公众号号redream里,但是很少有人会同时在线,所以你会经常发现你进去的时候只有你一个人,就导致群聊不起来)

1.好吧,先来看一下我们的效果图

基于vue和websocket的多人在线聊天室

基于vue和websocket的多人在线聊天室

基于vue和websocket的多人在线聊天室

2.用到的一些东西

nodejs node服务器运行环境
express 搭建node服务器
websocket 本例核心,推送服务器消息到所有人
socketio websocket第三方库
vue + router 视图层双向数据绑定框架,用来简化开发、组件化开发的
es6语法 就是好用简洁哈哈
https 因为像websocket和很多h5的新功能,浏览器为了安全起见都仅支持https下开发 关于nodejs搭建express服务器可以看这里我就是在这里学的,代码里也借鉴了很多,关于搭建https服务器就不简介了,内容太多,推荐阿里云一年的免费证书,可以访问我的站点查看

3.代码架构简介

server里是需要运行在node服务器上的js文件,监听websocket连接
src/api/client是客户端连接服务器的核心js
src/components下是页面的组件。我分成了三大部分,login组件(登录页面),chat组件(聊天页面),groupinfo组件(群信息页面),其实是单页应用,反应速度更快,接近原生app,只不过用router联系在了一起。像chat组件,又又head、body、foot组件组成,组件化是很好的习惯和架构方式,条理清晰,而且在大项目里很多可以复用。 具体都在代码了,大家可以下载下来在本地跑一跑。

4.运行代码

install dependencies

npm install

serve with hot reload at localhost:8080
npm run dev

build for production with minification
npm run build

这是在我站点上跑着的例子,大家可以看一看,在手机上效果更加,最近校招比较忙,就花了两天,没考虑兼容,欢迎大家提出意见。

官方网址:https://github.com/secreter/websocket_chat

文件打包下载:vue_websocket_chat.zip

Javascript 相关文章推荐
jquery实现tr元素的上下移动示例代码
Dec 20 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
原生js实现打字动画游戏
Feb 04 Javascript
javascript字体颜色控件的开发 JS实现字体控制
Nov 27 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
react router4+redux实现路由权限控制的方法
May 03 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
node crawler如何添加promise支持
Feb 01 #Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 #Javascript
js获取本日、本周、本月的时间代码
Feb 01 #Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 #Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 #Javascript
vue学习笔记之slot插槽基本用法实例分析
Feb 01 #Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 #Javascript
You might like
服务器端解压缩zip的脚本
2006/12/22 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python实现多进程通信实例分析
2019/09/01 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
python程序需要编译吗
2020/06/19 Python
如何使用Python调整图像大小
2020/09/26 Python
公司运动会策划方案
2014/05/25 职场文书
入党综合考察材料
2014/06/02 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
学校财务管理制度
2015/08/04 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python