广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现websocket客服聊天功能
  • 328
分享到

vue实现websocket客服聊天功能

2024-04-02 19:04:59 328人浏览 泡泡鱼
摘要

本文章主要介绍如何实现一个基本的聊天,后续会添加表情包,传照片等功能 其实刚开始接触的时候,我最大的疑惑是聊天功能的前期是否需要搭建什么框架、下载一些什么东西之类的,结果就是,其实w

本文章主要介绍如何实现一个基本的聊天,后续会添加表情包,传照片等功能

其实刚开始接触的时候,我最大的疑惑是聊天功能的前期是否需要搭建什么框架、下载一些什么东西之类的,结果就是,其实websocket可以直接使用,然后前后端搭配,也是免费的,暂时没发现需要收费功能的东西。

实现效果图:

首先封装一个WEBSocket.js文件(大家可以直接复制,然后把接收/发送数据之类的格式改成自己的就可以啦)


import store from '@/store'
var webSocket = null;
var globalCallback = null;//定义外部接收数据的回调函数

//初始化websocket
export function initWebSocket (url) {
  //判断浏览器是否支持websocket
  if ("WebSocket" in window) {
    webSocket = new WebSocket(url);//创建socket对象
  } else {
    alert("该浏览器不支持websocket!");
  }
  //打开
  webSocket.onopen = function () {
    webSocketOpen();
  };
  //收信
  webSocket.onmessage = function (msg) {
    webSocketOnMessage(msg);
  };
  //关闭
  webSocket.onclose = function () {
    webSocketClose();
  };
  //连接发生错误的回调方法
  webSocket.onerror = function () {
    console.log("WebSocket连接发生错误");
  };
}

//连接socket建立时触发
export function webSocketOpen () {
  console.log("WebSocket连接成功");
}

//客户端接收服务端数据时触发,e为接受的数据对象
export function webSocketOnMessage (e) {
  // 存储在store中,然后在聊天界面中监控变化 自动拿取收到的信息
  store.commit('user/SET_WS_MSG', e)
}

//发送数据
export function webSocketSend (data) {
  console.log('发送数据');
  //在这里根据自己的需要转换数据格式
  webSocket.send(JSON.stringify(data));
}

//关闭socket
export function webSocketClose () {
  webSocket.close()
  console.log("对话连接已关闭");
  // }
}


//在其他需要socket地方调用的函数,用来发送数据及接受数据
export function sendSock (agentData, callback) {
  globalCallback = callback;//此callback为在其他地方调用时定义的接收socket数据的函数,此关重要。
  //下面的判断主要是考虑到socket连接可能中断或者其他的因素,可以重新发送此条消息。
  switch (webSocket.readyState) {
    //CONNECTING:值为0,表示正在连接。
    case webSocket.CONNECTING:
      setTimeout(function () {
        console.log('正在连接。。。');
        webSocketSend(agentData, callback);
      }, 1000);
      break;
    //OPEN:值为1,表示连接成功,可以通信了。
    case webSocket.OPEN:
      console.log('连接成功');
      webSocketSend(agentData);
      break;
    //CLOSING:值为2,表示连接正在关闭。
    case webSocket.CLOSING:
      setTimeout(function () {
        console.log('连接关闭中');
        webSocketSend(agentData, callback);
      }, 1000);
      break;
    //CLOSED:值为3,表示连接已经关闭,或者打开连接失败。
    case webSocket.CLOSED:
      console.log('连接关闭/打开失败');
      // do something
      break;
    default:
      // this never happens
      break;
  }
}

//将初始化socket函数、发送(接收)数据的函数、关闭连接的函数export出去
export default {
  initWebSocket,
  webSocketClose,
  sendSock
};

Vuex中定义存储下接收的数据

store/modules/user.js


let state = {
 webSocketMsg: ''
};

//修改state
const mutations = {
    // 存储websocket推送的消息
    SET_WS_MSG: (state, msg) => {
        state.webSocketMsg = msg
    }
}
//提交异动mutations。 如果在接受块出现问题,可以把这个加上去看看
//const actions = {
 //   webSockets ({ commit }) {
 //      commit('SET_WS_MSG', 2)
 //   }
//}

store/getters.js


//获取state的状态
const getters = {
    webSocketMsg: state => state.user.webSocketMsg
}

export default getters

然后在聊天界面中开始使用啦 websocket.vue


<script>
import { initWebSocket, sendSock, webSocketClose } from '@/utils/websocket.js'
export default {
  data() {
    return {
     // 这个地址是后端给的,用来连接websocket。 加密wss 未加密ws
      wsUrl:'ws://地址',
    }
  },
  // 从store中获取接收到的信息
  computed: {
    getSocketMsg() {
      return this.$store.state.user.webSocketMsg
    },
  },
  //监控 getSocketMsg 是否有接收到数据
  watch: {
    getSocketMsg: {
      handler: function (val) {
        this.getConfigResult(val)
      },
    },
    //这一步是我对我聊天框的CSS设计,大家可以不用写,需要的时候再参考。
    //我将接收到的信息和发出的信息都存储到obList中,然后通过监控数值变化,使聊天定位始终位于底部(css中 overflow: auto;)
    obList: {
      handler: function (val) {
        this.$nextTick(() => {
          this.$refs.chatContent.scrollTop = this.$refs.chatContent.scrollHeight
        })
      },
    },
    immediate: true,
  },
  methods: {
    // 点击按钮-建立聊天连接
    customerDialog() {
      initWebSocket(this.wsUrl)
    },
    // 接收socket回调函数返回数据的方法,这个函数是我在监控接受数据的时候调用的(上面的watch中)
    getConfigResult(val) { },

 // 点击发送按钮 发送信息---发送信息的格式要和后端确认
    sending() {
      sendSock('发送的信息')
    },
    // 处理聊天框关闭事件
    handleClose() {
     //关闭连接
      webSocketClose()
    },
  },
}
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现websocket客服聊天功能

本文链接: https://www.lsjlt.com/news/137529.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现websocket客服聊天功能
    本文章主要介绍如何实现一个基本的聊天,后续会添加表情包,传照片等功能 其实刚开始接触的时候,我最大的疑惑是聊天功能的前期是否需要搭建什么框架、下载一些什么东西之类的,结果就是,其实w...
    99+
    2022-11-12
  • Vue+Websocket简单实现聊天功能
    本文实例为大家分享了Vue+Websocket简单实现聊天功能的具体代码,供大家参考,具体内容如下 效果图: 聊天室 此篇文章是针对Websocket的简单了解和应用,利用Node...
    99+
    2022-11-12
  • C#用websocket实现简易聊天功能(客户端)
    本文实例为大家分享了C#用websocket实现简易聊天功能的具体代码,供大家参考,具体内容如下 前言 使用C#语言进行开发,基于.NET FrameWork4功能包含群聊,和私聊参...
    99+
    2022-11-13
  • vue使用WebSocket模拟实现聊天功能
    效果展示 两个浏览器相互模拟 1.创建模拟node服务 在vue根目录下创建 server.js 文件模拟后端服务器 **在server终端目录下载 ** npm insta...
    99+
    2022-11-12
  • WebSocket实现简单客服聊天系统
    一 需求 一个多商家的电商系统,比如京东商城,不同商家之间的客服是不同的,所面对的用户也是不同的。要实现这样一个电商系统的客服聊天系统,那该系统就必须是一个支持多客服、客服一对多用户的聊天系统。 二 思路 ...
    99+
    2022-06-04
    客服 简单 系统
  • Springboot+WebSocket实现在线聊天功能
    目录一、后端二、Websocket三、前端一、后端 1.在Springboot项目的pom.xml中添加依赖 <!--websocket协议--> <depende...
    99+
    2023-02-14
    Springboot WebSocket在线聊天 Springboot WebSocket聊天 Springboot WebSocket
  • Java聊天室之实现聊天室客户端功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:实现聊天室客户端。运行程序,用户登录服务器后,可以从用户列表中选择单个用户进行聊天,也可以选择多个用户进行聊天。 二、...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端
  • C#使用WebSocket实现聊天室功能
    WebSocket介绍 WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 在WebSocket API中,浏览器和服务器只需要做一个握手的动作...
    99+
    2022-11-13
  • C#基于WebSocket实现聊天室功能
    本文实例为大家分享了C#基于WebSocket实现聊天室功能的具体代码,供大家参考,具体内容如下 前面两篇温习了,C# Socket内容 本章根据Socket异步聊天室修改成WebS...
    99+
    2022-11-13
  • java实现多客户聊天功能
    java 实现多客户端聊天(TCP),供大家参考,具体内容如下 1. 编程思想: 1)、要想实现多客户端聊天,首先需要有多个客户端,而这些客户端需要随时发送消息和接受消息,所以收发消...
    99+
    2022-11-12
  • C#用websocket实现简易聊天功能(服务端)
    C# 利用websocket实现简易聊天功能——服务端,供大家参考,具体内容如下 前言 使用C#语言进行开发,基于.NET FrameWork4功能包含群聊,...
    99+
    2022-11-13
  • 基于websocket的聊天功能怎么实现
    本篇内容主要讲解“基于websocket的聊天功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于websocket的聊天功能怎么实现”吧!   一...
    99+
    2022-10-19
  • Java聊天室之实现客户端群聊功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:不同的客户端之间需要进行通信,一个客户端与其他的多个客户端进行通信,实现群聊功能。 实现一个客户端与其他多个客户端进行...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端群聊
  • Vue+express+Socket实现聊天功能
    本文实例为大家分享了Vue+express+Socket实现聊天功能的具体代码,供大家参考,具体内容如下 实现聊天功能 具体功能 只是为了实现功能,不对界面进行美化 1、输入消息点击...
    99+
    2022-11-12
  • Java聊天室之实现客户端一对一聊天功能
    目录一、题目描述二、解题思路三、代码详解多学一个知识点一、题目描述 题目实现:不同的客户端之间需要进行通信,一个客户端与指定的另一客户端进行通信,实现一对一聊天功能。 实现一个客户端...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java  客户端一对一聊天
  • Django实现WebSocket在线聊天室功能(channels库)
    1.Django实现WebSocket在线聊天室 1.1 安装 pip install channels==2.3 (saas) F:\Desktop\Python_Study\...
    99+
    2022-11-12
  • vue实现web在线聊天功能
    本文实例为大家分享了vue实现web在线聊天的具体代码,供大家参考,具体内容如下 最终实现的效果 实现过程 无限滚动窗体的实现之前已经介绍过,这里就不在赘述了,不清楚的可以通过文档...
    99+
    2022-11-12
  • golang实现一个简单的websocket聊天室功能
    基本原理: 1.引入了 golang.org/x/net/websocket 包。 2.监听端口。 3.客户端连接时,发送结构体: {"type":"login","uid":"我是...
    99+
    2022-11-12
  • 使用php开发Websocket,实现即时聊天功能
    使用PHP开发Websocket,实现即时聊天功能Websocket是一种全双工通信协议,适用于实时通信场景,比如即时聊天、实时数据更新等。PHP作为一种流行的服务器端编程语言,也可以通过相关库和扩展来实现Websocket功能。在本文中,...
    99+
    2023-12-09
    PHP开发 Websocket实现 即时聊天功能
  • C#中怎么用websocket实现简易聊天功能
    本篇内容主要讲解“C#中怎么用websocket实现简易聊天功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中怎么用websocket实现简易聊天功能”吧!前言使用C#语言进行开发,基于....
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作