广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >websocket+Vuex实现一个实时聊天软件
  • 385
分享到

websocket+Vuex实现一个实时聊天软件

2024-04-02 19:04:59 385人浏览 安东尼
摘要

目录前言一、效果如图二、具体实现步骤1.引入Vuex2.WEBscoked实现总结前言 这篇文章主要利用websocked 建立长连接,利用Vuex全局通信的特性,以及watch,c

前言

这篇文章主要利用websocked 建立长连接,利用Vuex全局通信的特性,以及watch,computed函数监听消息变化,并驱动页面变化实现实时聊天。

一、效果如图

在这里插入图片描述

二、具体实现步骤

1.引入Vuex

代码如下(示例):


//安装vuex
npm install vuex

//main.js 中引入
import store from './store'
new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App)
})

我对Vuex进行了简单的封装,如下图,各位小伙伴可以按照自己使用的习惯进行。

在这里插入图片描述

2.webscoked实现

webscoked实现主要分为一下几个部分:

建立连接

发送心跳包

失败或者出错之后重新链接


const state = {
    url: '',
    websocket: null,
    lockReconnect: false,
    messageList: [],
    msgitem: {},
    pingInterval: null,
    timeOut: null,
}
const mutations = {
    [types.INIT_WEBSocket](state, data) {
        state.webSocket = data
    },
    [types.LOCK_RE_CONNECT](state, data) {
        state.lockReconnect = data
    },
    [types.SET_PING_INTERVAL](state, data) {
        state.pingInterval = data
    },
    [types.SET_MSG_LIST](state, data) {
        state.messageList.push(data)
        state.msgItem = data
    },
}
const actions={
  initWebSocket({ state, commit, dispatch, rootState }) {
        if (state.webSocket) {
            return
        }
        const realUrl = WSS_URL + rootState.doctorBasicInfo.token 
        const webSocket = new WebSocket(realUrl)
        webSocket.onopen = () => {
            console.log('建立链接');
            dispatch('heartCheck')
        }
        webSocket.onmessage = e => {
            console.log('接收到消息', e);
            try {
                if (typeof e.data === 'string' && e.data !== 'PONG') {
                    let res = JSON.parse(e.data)
                    console.log('接收到内容', res);
                    commit('SET_MSG_LIST', res)
                }
            } catch (error) {}
        }
        webSocket.onclose = () => {
            console.log('关闭');
            dispatch('reConnect')
        }
        webSocket.onerror = () => {
            console.log('失败');
            dispatch('reConnect')
        }

        commit('INIT_WEBSOCKET', webSocket)
    },
    // 心跳包
    heartCheck({ state, commit }) {
        console.log(state, 'state');
        const { webSocket } = state
        const pingInterval = setInterval(() => {
            if (webSocket.readyState === 1) {
                webSocket.send('PING')
            }
        }, 20000)
        commit('SET_PING_INTERVAL', pingInterval)
    },
    //重新链接
    reConnect({ state, commit, dispatch }) {
        if (state.lockReconnect) {
            return
        }
        commit('INIT_WEBSOCKET', null)
        commit('LOCK_RE_CONNECT', true)
        setTimeout(() => {
            dispatch('initWebSocket')
            commit('LOCK_RE_CONNECT', false)
        }, 20000)
    },
 }
const getters = {
    webSocket: state => state.webSocket,
    messageList: state => state.messageList,
    msgItem: state => state.msgItem,
}
export default {
    namespaced: true,
    state,
    actions,
    mutations,
    getters
}

页面获取


methods: {
...mapActions("webSocket", ["initWebSocket", "close"]),
   pushItem(item) {
      const initMsg = item;
      this.msgList.push(initMsg);
    }
}
mounted() {
	this.initWebSocket();
}
watch: {
    msgItem: function (item) {
        this.pushItem(item);
    }
  },
computed: {
    ...mapGetters("webSocket", ["messageList", "msgItem"]),
   
  },

UI界面


 <li v-for="(item, i) in msgList" :key="i" class="msgBox"></li>

webscoked实现思路讲解

1.首先在actions中创建ws链接。

2.利用watch属性在在页面中监听state中对应的消息变化,当收到新的消息之后,改变页面展示的消息列表,利用双向绑定实现页面自动更新。

3.发送消息的时候调用后端接口,并将新消息插入到页面展示的消息列表中

4.因为ws是长链接一旦建立不会轻易断开,所以只要收到后端推送的消息,并判断是否具有消息内容,当有有消息内容只需要改变state中的消息列表,页面就会根据watch属性自动更新,完美实现即时通讯的功能。

总结

到此这篇关于websocket+Vuex实现一个实时聊天软件的文章就介绍到这了,更多相关websocket+Vuex实时聊天内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: websocket+Vuex实现一个实时聊天软件

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

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

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

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

下载Word文档
猜你喜欢
  • websocket+Vuex实现一个实时聊天软件
    目录前言一、效果如图二、具体实现步骤1.引入Vuex2.webscoked实现总结前言 这篇文章主要利用websocked 建立长连接,利用Vuex全局通信的特性,以及watch,c...
    99+
    2022-11-12
  • nodejs中怎么利用websocket实现一个实时聊天系统
    nodejs中怎么利用websocket实现一个实时聊天系统,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。client.html:<!D...
    99+
    2022-10-19
  • SpringBoot中webSocket实现即时聊天
    即时聊天 这个使用了websocket,在springboot下使用很简单。前端是小程序,这个就比较坑,小程序即时聊天上线需要域名并且使用wss协议,就是ws+ssl更加安全。但是要...
    99+
    2022-11-12
  • golang实现一个简单的websocket聊天室功能
    基本原理: 1.引入了 golang.org/x/net/websocket 包。 2.监听端口。 3.客户端连接时,发送结构体: {"type":"login","uid":"我是...
    99+
    2022-11-12
  • SpringBoot中webSocket如何实现即时聊天
    这篇文章主要介绍了SpringBoot中webSocket如何实现即时聊天,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全新...
    99+
    2023-06-14
  • 怎么在HTML5中使用WebSocket实现一个聊天室
    本篇文章给大家分享的是有关怎么在HTML5中使用WebSocket实现一个聊天室,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1)注册注册要处理几个事情,分别是注册完成后获取当...
    99+
    2023-06-09
  • Node.js websocket使用socket.io库实现实时聊天室
    认识websocket WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duple)。一开始的握手需要借助HTTP请求完成。 其实websocke...
    99+
    2022-06-04
    实时 聊天室 js
  • 如何用PHP websocket实现网页实时聊天
    目录前言websocket简介与http的关系握手数据传输PHP 实现 websocket 服务器文件描述符创建服务器socket服务器逻辑客户端创建客户端页面功能用户名异步处理总结...
    99+
    2022-11-12
  • SpringBoot整合websocket实现即时通信聊天
    目录一、技术介绍1.1 客户端WebSocket1.1.1 函数1.1.2 事件1.2 服务端WebSocket二、实战 2.1、服务端2.1.1引入maven依赖2.1....
    99+
    2022-11-13
  • 在SpringBoot中利用Websocket实现一个网页聊天功能
    这篇文章将为大家详细讲解有关在SpringBoot中利用Websocket实现一个网页聊天功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。导入websocket的包。通过使用SpringB...
    99+
    2023-05-31
    springboot websocket bs
  • websocket+node.js实现实时聊天系统问题咨询
    1.最近新学习websocket。做了一个实时聊天。用Node.js搭建的服务:serevr.js. 两个相互通信页面:client.html 和server.html 但是就是有很多问题,想让知道的人帮我...
    99+
    2022-06-04
    实时 系统 websocket
  • 怎么使用PHP websocket实现网页实时聊天
    小编给大家分享一下怎么使用PHP websocket实现网页实时聊天,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文开始前,先贴一张聊天室的效果图(请不要在意C...
    99+
    2023-06-15
  • Node.js websocket如何使用socket.io库实现实时聊天室
    这篇文章主要介绍Node.js websocket如何使用socket.io库实现实时聊天室,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!认识websocketWebSocket p...
    99+
    2022-10-19
  • 使用php开发Websocket,实现即时聊天功能
    使用PHP开发Websocket,实现即时聊天功能Websocket是一种全双工通信协议,适用于实时通信场景,比如即时聊天、实时数据更新等。PHP作为一种流行的服务器端编程语言,也可以通过相关库和扩展来实现Websocket功能。在本文中,...
    99+
    2023-12-09
    PHP开发 Websocket实现 即时聊天功能
  • 在Web应用中使用WebSocket实现实时聊天功能
    在现代的Web应用程序中,实时聊天是一项非常常见的功能。使用传统的HTTP协议进行通信是不适合实时性的,因此需要借助WebSocket来实现实时聊天功能。WebSocket是HTML5中的一项新技术,它提供了一种在Web浏览器和服务器之间进...
    99+
    2023-10-21
    websocket Web应用 实时聊天
  • websocket+node.js如何实现实时聊天系统问题咨询
    小编给大家分享一下websocket+node.js如何实现实时聊天系统问题咨询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1...
    99+
    2022-10-19
  • PHP中怎么利用WebSocket实现一个在线聊天通讯系统
    今天就跟大家聊聊有关PHP中怎么利用WebSocket实现一个在线聊天通讯系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。新建WebSocket....
    99+
    2022-10-18
  • 怎么在Django中使用channels和websocket实现一个在线聊天室
    本篇文章为大家展示了怎么在Django中使用channels和websocket实现一个在线聊天室,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Channels是Django团队研发的一个给Djan...
    99+
    2023-06-15
  • nw.js实现类似微信的聊天软件
    nw.js实现类似微信的聊天软件 公司 qq被屏蔽,微信被屏蔽,怎么与外边通讯,你懂的。当然,也适合公司自己内部架设服务器,通讯。 项目地址: free chat 截图: 以上就是给大家分享的这个f...
    99+
    2022-06-04
    聊天软件 类似 nw
  • Springboot+WebSocket实现一对一聊天和公告的示例代码
    1.POM文件导入Springboot整合websocket的依赖 <dependency> <groupId>...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作