vue web在线聊天功能实现

本文详细介绍了如何使用Vue.js实现一个实时在线聊天功能,包括聊天窗口的滚动、信息展示逻辑以及数据加载等关键点。通过HTML、JavaScript和CSS代码示例,展示了聊天界面的实现过程。
摘要由CSDN通过智能技术生成

上一篇介绍了vue怎么实现无限滚动窗体,这一篇就具体怎么使用vue实现web在线聊天功能展开深入讨论。

对尚且不清楚怎么实现无限滚动窗体的,可前往这里查看《vue和iview实现无限滚动的正确解法》

 先看看最终实现的效果

 实现过程


无限滚动窗体的实现之前已经介绍过,这里就不在赘述了,不清楚的可以通过文档前文的传送门进行查看。

实时在线聊天主要功能点

  • 滚动到两天窗体顶部,自动加载历史跟多信息,数据加载的时候,需要有一个loading动画;
  • 发送信息是滚动条自动滑动到窗体底部,并且自己发送的信息出现在聊天窗体中;
  • 收到别人发送信息时,需要判断滚动条处于窗体中的位置,在距离底部一定范围内收到信息需要自动滑动到窗体底部;
  • 收发的信息在聊天状态不能重复显示;
  • 收发的信息在聊天窗体中需要以逆序的方式展示,即离窗体底部越近的信息为最新消息;
  • 授信最好通过WebSocket与后端建立长连接,有新消息由后端主动向前端推送消息方式实现,这里主要介绍前端实现聊天窗体思路,WebSocket部分就不展开了,采用定时器轮询的方式简单实现。

话不多说,直接上代码


后端返回数据格式

我觉得所有的设计和功能实现都是基于数据的基础上去实现的,所以咋们先来看一下后端返回的数据格式:

{
	"code": 200, // 响应编码
	"msg": "OK", // 响应消息
	"total": 1, 
	"sysTime": "2020-12-16 15:23:27", // 系统响应时间
	"data": [{
		"avatar": "",  // 用户头像
		"content": "{\"type\":\"txt\",\"msg\":\"你好!\"}", // 消息内容
		"isRead": 0, // 是否已读
		"isOneself": 0,  // 是否是自己发送的消息 0否,1是
		"msgId": 10, // 消息ID,用来去重
		"nickName": "碧海燕鱼", // 用户昵称
		"userCode": "202012162030202232" // 用户编码
	}]
}

 这里需要说明的是,content字段返回的是一个json格式的字符串数据,content内容格式如下:

// 文本消息
{
  "type": "txt",
  "msg":"你好" //消息内容
}
// 图片消息
{
  "type": "img",
  "url": "图片地址",
  "ext":"jpg",
  "width":360,    //宽
  "height":480,    //高
  "size": 388245
}
// 视频消息
{
  "type": 'video',
  "url": "http://nimtest.nos.netease.com/cbc500e8-e19c-4b0f-834b-c32d4dc1075e",
  "ext":"mp4",
  
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值