一款极简聊天应用,比较完整,略好看

HasChat

基于vue3+socket.io的聊天应用
无偿开源!你们的Star是我的动力!

介绍

自我做的客服聊天以来,让我做一套聊天应用的呼声越来越多,加上那套客服聊天由于没有组件化、UI设计等问题,也让我一直心有遗憾做的不够完美,于是利用空余时间做了一套相对完整的聊天应用。HasChat 是一套使用全新技术完成的通讯聊天网页。

  • 前端:Vue3 + Vite + TypeScript + Naive UI + Socket.io
  • 后端:Express.js
    作者开源目的旨在给刚学习该领域的新人一些引路,不管你是前端还是后端,都能对你在通讯聊天这个领域有一点点的启发。

仓库地址

  • 前端
  • 后端

预览图

在这里插入图片描述

在这里插入图片描述

在线预览

HasChat聊天应用

功能一览

  • 登陆、随机获取用户登陆
  • 发送邮箱验证码注册
  • 发送表情+文字组合的富文本内容
  • 发送图片内容,查看大图
  • enter发送信息,enter+ctrl换行输入内容
  • 消息提醒
  • 未读消息标记
  • 记录历史会话
  • 记录历史聊天内容
  • 切换主题

版本说明

  • 前端:暂无版本区别
  • 后端:分为mysql版本(分支main)和json版本(分支master);json版本主要是为了不懂mysql的新手学习;

环境部署

Node.Js >= 12.0.0
Mysql >= 5.7.0 (仅mysql版本需要,但执行mysql文件需要8.0以上版本)

下载项目

前端

https://gitee.com/howcode/has-chat.git

后端 mysql版本

git clone -b main https://gitee.com/howcode/has-chat-service.git

后端 json版本

git clone -b master https://gitee.com/howcode/has-chat-service.git

启动项目

安装依赖

前、后端

npm install

mysql配置(json版本跳过)

  • 在mysql的版本中,找到目录store下的sql文件,运行sql文件
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 依次运行两个sql文件,并且刷新数据库表就可看到了
    在这里插入图片描述
  • 找到config.js文件
const db = mysql.createConnection({host: "", // 主机地址 (默认:localhost)user: "", // 用户名password: "", // 密码database: "" // 数据库
})

更多配置查看:nodejs-mysql

邮箱配置(json版本跳过)

  • 找到config.js文件
emailConfig: { //邮箱配置host: "smtp.qq.com",//邮箱服务器  这里我用的QQ邮箱port: 465,//邮箱使用端口secure: true,//是否使用默认的465端口auth: {user: "", // 发送方邮箱地址pass: "" // smtp 验证码}}

详情使用可以查看该文章:nodejs发送邮箱信息

启动项目/服务

  • 后端
node app.js
  • 前端
npm run dev

到此,项目可以正常运行

项目目录

haschat     
├── src            
│       └── api                    		  // 接口文件
│       └── assets						  // 资源文件
│			└── css					 	  // css样式
│			└── emo					 	  // 表情包
│			└── icon					  // 字体图标
│			└── img					 	  // 图片资源
│			└── mp3					 	  // 消息提示音频
│       └── class                      	  // 类文件
│       └── components                    // 组件
│			└── ChatContent.vue			  // 聊天窗口
│			└── ChatDomain.vue			  // 功能组件
│			└── ChatEditor.vue			  // 聊天输入框
│			└── ChatFoot.vue			  // 聊天框底部
│			└── ChatHead.vue			  // 聊天头部
│			└── ChatNav.vue				  // 菜单栏
│			└── HasChat.vue				  // 聊天入口
│       └── enums                         // 通用枚举
│       └── json                          // JSON数据处理
│       └── router                        // 路由
│       └── store                         // 数据仓库
│       └── utils                         // 工具
│       └── views                         // 页面

类文件

User

字段类型描述
Idnumber用户Id
Namestring用户姓名
NickNamestring用户昵称
OnlineStateboolean在线状态
Mobilestring用户手机号
Avatarstring用户头像

Conversition

字段类型描述
Idnumber内容Id
SendIdnumber发送人Id
ReciverIdnumber接受人Id
Contentstring内容
Typenumber类型
Statenumber发送状态
NoCodestring信息编号
CreateDateUtcstring创建时间
Titlestring拓展功能字段
Descriptionstring拓展功能字段
Labelstring拓展功能字段
Thumbnailstring拓展功能字段
ReadFlagboolean是否阅读
Avatarstring发送者用户头像

请求api

1.获取用户信息

参数

id:用户Id,必传

接口地址 : /api/getUserById

2.获取用户列表

参数

id:除去的用户Id,必传

接口地址 : /api/userList

3.随机获取一条用户数据

参数

接口地址 : /api/getRandomUser

4.登陆

参数

email:账户,必传

password:密码,必传

接口地址 : /api/login

5.注册

参数

email:邮箱,必传

name:用户名,必传

password:密码,必传

surePassword:确认密码,必传

接口地址 : /api/register

6.发送邮箱验证码

参数

email:邮箱,必传

timestamp:时间戳,自动携带

接口地址 : /api/sendVerificationCode

7.校验邮箱验证码

参数

verificationCode:验证码,必传

timestamp:时间戳,自动携带

接口地址 : /api/checkVerificationCode

socket.io的api

1.加入聊天

参数

SendId:发送者Id,必传

NoCode:时间戳,自动携带

调用方式

store.state.socket.emit("joinChat", {SendId: xxx,NoCode: xxx,
});

2.发送消息

参数

Conversition:发送内容对象(查看Conversition类),必传

ReciverId:接收者Id,必传

SendId:发送者Id,必传

调用方式

store.state.socket.emit("sendMsg", {Conversition: xxx,ReciverId: xxx,SendId: xxx,
});

3.修改信息阅读状态

参数

ReciverId:接收者Id,必传

SendId:发送者Id,必传

调用方式

store.state.socket.emit("changeMsgRead", {ReciverId: xxx,SendId: xxx,
});

4.新增历史会话

参数

SendId:发送者Id,必传

Revicer:接受者对象(可查看Use类),必传

调用方式

store.state.socket.emit("insertHistorySession", {SendId: xxx,Revicer: xxx,
});

免责声明

一、本项目宗旨在于为广大的正在学习通讯方面的新手提供学习、思路

二、本项目资源全部免费分享,包括前端源码、后端转源码等。本项目不会利用任何资源进行任何的销售盈利活动。

三、任何情况下,因使用本项目进行违法犯罪的行为,本人不承担任何法律责任。

未来计划

  • 发送图片上传到服务器,以src路径形式获取
  • 发送视频功能
  • 群聊功能
  • 发送视频
  • uni-app开发混合app/h5/小程序版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36898.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外

12月27日,北京易诚互动网络技术股份有限公司(下称“易诚互动”)在深圳证券交易所更新招股书,准备在创业板上市。本次冲刺上市,易诚互动计划募资3.13亿元,将用于用于数字银行应用平台升级项目、大数据智能风…

融资破局 |中英美三国多层次资本市场和STO融资的比较及借鉴

一、引言 全球金融定价权、全球金融游戏规则,谁来定?谁是跟随者呢? 美国资本市场经历了200多年的发展,形成了当今世界上最完善、最发达的多层次资本市场体系。美国证券市场主要包括主板市场、创业板市场、场外交易市场和区域性产…

GBA Capital旗下运营公司中融环球完成1亿估值天使轮融资,由广东和合领投

近日,Web3.0资本平台GBA Capital宣布完成旗下运营公司中融环球估值1亿人民币的天使轮融资。中融环球主要方向为Web3.0、AI领域项目孵化及产业服务,致力于以教育培训、项目孵化等方式实现商业与新技术创新融合,实现头部品牌、企业Web3.0转型&a…

大牛书单 | 消息队列方向的好书

消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词。对于后端工程师而言,更是日常开发中必备的一项技能。消息队列主要解决应用耦合、异步消息、流量削锋等问题,具有高性能、高可用、可伸缩和最终一…

C#学习推荐书单

仅供学习参考,请于24小时内删除。如有版权问题请联系我。 我是从只懂C语言只看这本书入门C#, 可以参考: 《叩响C#之门》 有需要可以留言哦. 链接直达: 123云盘 如果有需要,可以指定某本书(只限一本),留下邮箱&…

年度推荐书单:为你精选23本商业书

在知乎上有一个问题:“你在哪一刻,感受到了知识改变命运?” 巴菲特曾说,如果自己19岁那年没有看《聪明的投资者》这本书,那么整个人生轨迹会截然不同。 马云也说:“我第一次高考失败后做临工,在…

算法竞赛推荐书单

前言 入坑算法竞赛已经一年半了,在这期间也读了不少关于算法竞赛的书,这些书对我的帮助还是蛮大的。平时看题解多是个人零散的题解,很难以系统的去学习,认认真真的挑选1-2本书来阅读,无论是从思维能力还是文字表达能力…

IC技术圈推荐书单

《IC芯片设计中的静态时序分析实践》 作者:J. Bhasker, Rakesh Chadha 本书深度介绍了芯片设计中用静态时序分析进行时序验证的基本知识和应用方法,涉及了包括互连线模型、时序计算和串扰等在内的影响纳米级电路设计的时序的重要问题,并详细解…

程序员必读书单(非常经典,强烈推荐)

原文链接:http://lucida.me/blog/developer-reading-list/ 关于 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最全面的程序员必读书单…

书单推荐

年前在图书馆借了几本书,这个春节带回老家看,没想到今年这个春节课余时间这么多,大致看了下,有三本书感觉还可以,推荐给大家。 1、洞见 任何决策都有边界,受局限。例如,领导者的时间精力&#x…

忆享聚焦|人工智能、AI、百川智能、机器人……近期热点资讯一览

“忆享聚焦”栏目第十五期来啦!本栏目汇集近期互联网最新资讯,聚焦前沿科技,关注行业发展动态,筛选高质量讯息,拓宽用户视野,让您以最低的时间成本获取最有价值的行业资讯。目录 行业资讯 1.政企合力共推A…

震惊!人工智能引发灰色经济,ChatGPT变身罪魁祸首!

人工智能技术的日益发展和普及,其呈现出无边界的开发空间,引领出无数的商业应用,越来越多的领域开始依赖这一技术,各种应用场景日益丰富,而其内在的巨大潜力也被不断开发。随之而来的则是,因为技术的滥用和…

抖音开放平台,究竟开放了什么?

“抖音有 6 亿用户,我们希望连同更多的开发者在抖音里能够为用户交付更多、更优质的服务。” ——常坤 抖音开放平台负责人 作为日活超 6 亿的短视频平台,抖音已经渗透到我们生活的多个方面。从个人到企业甚至行业,从内容经营到电商消费&…

抖音怎么实现落地页跳转微信加好友?

玩抖音的朋友应该能经常看到很多商家在官网链接中或者私信界面中设置一个主页跳转页,然后把个人微信号或手机号嵌入其中,这样可以实现很好的商业用途和吸粉效果,事实也证明了确实有很好的吸粉效果。下面就分别大家讲一下这两种方式的具体实现…

抓包抖音充值页面实现微信支付宝充值抖币,可提供api

抖币充值系统重写升级: 1.支持配置扫码配置多个CK 2.支持生成 微信/支付宝 支付二维码 扫码充值 3.支持 微信/支付宝 APP 直接唤醒充值 体验如下: 需要的小伙伴可私信 留言! 整个开发流程思路是以下几步: 1.抓包分析抖音的充值的整个流程&#xff0…

douyin web端滑动,点选验证码分析

仅用在学习交流,如有侵权,联系删除。 仅用在学习交流,如有侵权,联系删除。 仅用在学习交流,如有侵权,联系删除。 当前douyin web端,请求cookie中有两个很重要的参数,一个就是s_v_we…

抖音全接口API

​ from com.dtmilano.android.viewclient import ViewClient def search_douyin_for_recommend_user(douyin_id): # 采集指定抖音账号的关注推荐数据 # 连设备 serialno None if serialno: os.system(adbconnect{}.format(serialno or )) time.sleep(3) device, serialno Vi…

短视频的运营团队分为三种

1、最低配,就是一个人负责所有事情的运营,这个人需要会策划、会拍视频、会表演、会剪辑、会做内容策划、会投放,还要做一些其它的运营上的工作,这种模式在一些真人口播科普类账号比较常见,一个人能做得过来。 2、中级…

短视频代运营服务内容

直播电商没有万能钥匙,不同的品牌面临的应战也都是悬殊的,甚至在不同时期所运用的战略也会不同不小,数据是最有用的反应,继而不断调整查验。满意精准的查询才调带来满意高效的营销效果,抖音代运营服务商让品牌打破冷启…

如何组建短视频运营团队?

越是专业的短视频运营团队,分工就越精细,每部分的工作都应由专人负责。短视频创作者要了解团队成员的构成,根据实际工作需要确定团队人员配置。 短视频运营团队人员构成 导演 短视频作品的总负责人,负责人员的组织、工作协调、短…