vue web在线聊天功能实现

上一篇介绍了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://ni
  • 17
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
很抱歉,作为一个AI语言模型,我无法提供您需要的功能,但我可以告诉您如何在Vue和Spring Boot之间进行实时通信,从而实现在线聊天功能。 您可以使用Vue.jsWebSocket插件来与Spring Boot后端进行通信。WebSocket是一种双向通信协议,可在Web浏览器和服务器之间建立持久连接。Spring Boot支持WebSocket协议,因此您可以使用Spring Boot的WebSocket模块来实现服务器端的实时消息传递功能。 以下是实现Vue和Spring Boot之间实时通信的步骤: 1. 在Vue项目中安装vue-websocket插件: ``` npm install vue-websocket --save ``` 2. 在Vue的main.js文件中引入vue-websocket插件: ``` import VueWebsocket from 'vue-websocket' Vue.use(VueWebsocket, 'ws://localhost:8080/ws') ``` 3. 创建一个WebSocket处理程序,在Vue组件中使用它来处理消息: ``` import Vue from 'vue' import VueWebsocket from 'vue-websocket' export default { name: 'Chat', data () { return { messages: [], message: '' } }, methods: { sendMessage () { this.$socket.send(this.message) this.message = '' } }, sockets: { message (data) { this.messages.push(data) } } } ``` 4. 在Spring Boot中创建WebSocket配置类,以便配置WebSocket协议的处理程序: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new ChatWebSocketHandler(), "/ws").setAllowedOrigins("*"); } } ``` 5. 创建WebSocket处理程序,在Spring Boot中使用它来处理消息: ``` public class ChatWebSocketHandler extends TextWebSocketHandler { private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { s.sendMessage(message); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } } ``` 以上是实现Vue和Spring Boot之间实时通信的步骤。您可以根据自己的需求进行修改和实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值