Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题

这篇具有很好参考价值的文章主要介绍了Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术栈

  1. 前端Vue (包括一些组件、中间件)
  2. 后端分布式微服务

这里就不再详述后端是怎么开发通信服务端的了,因为我主要是后端开发,前端开发花的时间几乎是后端的两倍还要多(其实比较简单,只是自己前端真的不得行🤪)

最近在开发项目里的一个IM(实时通信)模块功能的时候发现,通过服务端转发客户端消息的时候,前端组件的数据一直没办法正常刷新,耗了很久,去查结果发现网上都没有我想要的答案(都是千篇一律的答案),最后还是没解决,那好吧,只能🪜看看了

好了,不废话了,直接上代码解决吧:

原来写法 socket.onmessage = function (event) {...}
新的写法 socket.onmessage = (event) => {...}

简单代码演示:

<template>
	<div>
		<p>{{tempContent}}</p>
	</div>
</template>
<script>
export default {
    name: "Test",
    data() {
        return {
        	socket: null, // 这里定义一个变量,因为后面有其他方法也要用到这个socket通道通信
            tempContent: 'Now is null'
        }
    },
    method: {
		initWebSocket: function() {
            // 判断浏览器是否支持WebSocket
            if (window.WebSocket) {
            	// this.GLOBAL.webSocketPath 这是一个全局变量,填的就是你的websocket的服务端通信地址
            	// 例子:this.GLOBAL.webSocketPath = ws://localhost:8080/socket
                this.socket = new WebSocket(this.GLOBAL.webSocketPath);
                
                // 监听消息,并将结果映射到对应标签
               this.socket.onmessage = function (ev) {
               		// 这里就自己注意转一下哈
               		console.log("==== onmessage ====")
                    let objTemp = JSON.parse(ev.data);
                    this.tempContent = objTemp.name
                    console.log(objTemp)
                    console.log(this.tempContent)
                }
              	// 其他那些监听事件就先省略了
            } else {
                console.log("当前浏览器不支持WebSocket");
            }  
        },
	},
	mounted() {
        this.initWebSocket();
    },
}
</script>

运行后,触发监听事件,并没有赋值上
Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题

修改代码后

<template>
	<div>
		<p>{{tempContent}}</p>
	</div>
</template>
<script>
export default {
    name: "Test",
    data() {
        return {
        	socket: null, // 这里定义一个变量,因为后面有其他方法也要用到这个socket通道通信
            tempContent: 'Now is null'
        }
    },
    method: {
		initWebSocket: function() {
            // 判断浏览器是否支持WebSocket
            if (window.WebSocket) {
            	// this.GLOBAL.webSocketPath 这是一个全局变量,填的就是你的websocket的服务端通信地址
            	// 例子:this.GLOBAL.webSocketPath = ws://localhost:8080/socket
                this.socket = new WebSocket(this.GLOBAL.webSocketPath);
                
                // 监听消息,并将结果映射到对应标签
               this.socket.onmessage = (ev) => {
                    console.log("==== onmessage ====")
                    let objTemp = JSON.parse(ev.data);
                    this.tempContent = objTemp.name
                    console.log(objTemp)
                    console.log(this.tempContent)
                }
              	// 其他那些监听事件就先省略了
            } else {
                console.log("当前浏览器不支持WebSocket");
            }  
        },
	},
	mounted() {
        this.initWebSocket();
    },
}
</script>

原来没有触发时的情况

Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题
触发之后
Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题文章来源地址https://www.toymoban.com/news/detail-421647.html

到了这里,关于Vue连接WebSocket后,监听消息并读取消息内容(onmessage事件),解决将内容赋值到data的属性失败的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 事件传参,参数同步显示 button提交内容,读取input内容

    我们先来回顾一下之前学的内容 我们可以在button组件中加入bindtap参数进行事件绑定 然后我们也能在input组件中加入bindinput参数进行事件绑定  结合以上内容我们接着学习,这么让事件绑定前端数据与后端同步 其实很简单,先来学习 先来一个基础的代码 我们给button一个事件

    2024年02月09日
    浏览(97)
  • 【SpringBoot笔记37】SpringBoot基于@ServerEndpoint、@OnMessage等注解的方式集成WebSocket

    这篇文章,主要介绍SpringBoot基于@ServerEndpoint、@OnMessage等注解的方式集成WebSocket。 目录 一、基于注解集成WebSocket 1.1、WebSocket常见注解 1.2、创建WebSocket服务端

    2024年02月14日
    浏览(31)
  • vue监听滚动条事件

    2024年02月11日
    浏览(42)
  • vue鼠标悬停事件监听

    开发框架为 vue2.x 需求是这样的:页面在鼠标悬停(不动)n秒之后,页面进行相应的事件。 比如在我的需求下,是鼠标悬停15秒之后,页面上三个数据弹窗轮询展示。 我的思路中 涉及到了三个变量 polling: 是 轮询的时候的一个计时器 timeCount: 是 判断鼠标是否移动的一个控

    2023年04月12日
    浏览(45)
  • OpenWrt | 以斐讯K2为例,编写脚本使用logread命令实时读取日志,监听OpenWrt网线插拔事件

    OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,适用于较多的路由器设备。 有时候,在使用OpenWrt时,我们需要监听网线的插拔,获取网线插拔的事件,并执行一些操作。OpenWrt官方文档给出使用hotplug去获取相关事件: https://openwrt.org/d

    2024年02月11日
    浏览(58)
  • vue监听鼠标与键盘事件

     效果:  

    2024年02月16日
    浏览(40)
  • C++学习之路(七)C++ 实现简单的Qt界面(消息弹框、按钮点击事件监听)- 示例代码拆分讲解

    这个示例创建了一个主窗口,其中包含两个按钮。第一个按钮点击时会显示一个简单的消息框,第二个按钮点击时会执行一个特定的操作(在这个例子中,仅打印一条调试信息)。 功能描述: 创建窗口和布局: 使用 QWidget 和 QVBoxLayout 创建主窗口并设置垂直布局,将按钮放置

    2024年02月04日
    浏览(68)
  • Python启动TCP服务并监听连接,从客户端发送消息

    下面是一个简单的例子,演示如何在Python中启动TCP服务并监听连接,以及如何从客户端发送消息: TCP服务端代码: TCP客户端代码: 这个例子中,服务端首先创建一个socket对象并绑定地址和端口,然后开始监听连接。当客户端连接到服务器时,服务端接受客户端的连接请求并

    2024年02月13日
    浏览(47)
  • vue3 监听resize窗口事件,离开页面要销毁窗口事件。

    resize事件: resize事件是改变窗口大小时发生的事件,可以在窗口开启、最大化、最小化、窗口大小改变(如拖拉改变窗口大小、move语句改变窗口大小、改变width或height属性以改变窗口大小)时发生。 1.监听浏览器窗口变化,实时获取该窗口的宽度和高度 2.监听 resize 事件 //优

    2024年02月12日
    浏览(46)
  • 【微信小程序】通过监听 WebSocket 的状态变化来判断Socket是否已经建立连接

    在微信小程序中,可以通过监听 WebSocket 的状态变化来判断是否已经建立连接。具体的操作步骤如下: 创建 WebSocket 对象并进行连接: 监听 WebSocket 的状态变化: 通过监听上述的状态变化,可以判断 WebSocket 是否已经建立连接。当连接成功时, onSocketOpen 会被触发;连接失败时

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包