uniapp中websocket的使用单个长连接

这篇具有很好参考价值的文章主要介绍了uniapp中websocket的使用单个长连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、新建js文件封装websocket.js

const WEBSOCKET = {
	//是否打开连接
	socketOpen: false,
	//连接socket
	/* 
	 url:链接地址 wss://xxxxxxxx.com
	 socketMessageFunc:收到服务器内容回调
	 */
	connectSocket(url, socketMessageFunc = null) {
		try {
			//连接socket
			uni.connectSocket({
				url,
				success() {
					console.log('websocket连接成功!')
				}
			})
			//监听socket连接
			uni.onSocketOpen((res) => {
				this.socketOpen = true
				console.log('WebSocket连接已打开!',res)
			})
			//监听socket连接失败
			uni.onSocketError((res) => {
				this.socketOpen = false
				console.log('WebSocket连接打开失败,请检查!',res)
			})
			//监听收到消息
			uni.onSocketMessage((res) => {
				console.log('收到服务器内容:' + res.data)
				if(socketMessageFunc){
					socketMessageFunc(res.data)
				}
			})
			//监听socket关闭
			uni.onSocketClose(() => {
				console.log('WebSocket 已关闭!')
				this.socketOpen = false
			})
		} catch (error) {
			console.log('err:' + error)
		}
	},

	//发送消息
	/* 
	 msg:字符串 JSON.stringify({
								"userId": this.uid,
								"targetIds": targetId,
								"data":'哈哈哈'
							})
	 successFunc:成功回调函数
	 errorFunc:失败回调函数
	 */
	sendMessage(msg = '', successFunc = null, errorFunc = null) {
		if (!this.socketOpen || !msg) {
			if (errorFunc) {
				errorFunc('未传消息内容或连接未打开!')
			}
			return
		}
		uni.sendSocketMessage({
			data: msg,
			success(res) {
				console.log('消息发送成功!')
				if (successFunc) {
					successFunc(res)
				}
			},
			fail(err) {
				console.log('消息发送失败!')
				if (errorFunc) {
					errorFunc(err)
				}
			}
		})
	},
	//关闭连接
	closeSocket() {
		if (!this.socketOpen) {
			return
		}
		//关闭socket连接
		uni.closeSocket()
	}
}

export default WEBSOCKET

2、单页面使用

<template>
	<view>
		<button type="primary" @click="heartBeatTest">开启定时器定时检测心跳</button>
	</view>
</template>

<script>
	//导入websocket对象
	import websocket from '@/utils/websocket'

	//定义定时器
	let globalTimer = null

	export default {
		onLoad() {
			try {
				//建立socket连接
				websocket.connectSocket('wss://xxxxxxxx.com', (res) => {
					console.log('收到内容:', res);
                    //做一些处理、方法调用
				})
			} catch (error) {
				console.log('error:' + error)
			}
		},
		onUnload() {
			//关闭socket
			websocket.closeSocket()
		},
		methods: {
			heartBeatTest() {
				//清除定时器
				if(globalTimer){
					clearInterval(globalTimer)
					globalTimer = null
				}
				globalTimer = setInterval(() => {
					//发送消息给服务端
					websocket.sendMessage(
						JSON.stringify({
							"userId": '001',
							"targetIds": '1234',
							"data": '哈哈哈'
						}), //与服务端约定好消息格式
						(res ) => {
							console.log('消息发送成功!',res)
						},
						(err) => {
							console.log('消息发送失败!',err)
							//如果失败则清除定时器
							clearInterval(globalTimer)
						}
					)
				}, 10000)
			}
		}
	}
</script>

<style lang="scss">

</style>

文章来源地址https://www.toymoban.com/news/detail-730820.html

到了这里,关于uniapp中websocket的使用单个长连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

    组件使用的是uview组件,Keyboard 键盘和MessageInput 验证码输入两个组件配合使用。 通过mode参数定义键盘的类型,v-model绑定一个值为布尔值的变量,我绑定的是showKeyboard变量,控制键盘的弹出与收起; mode = number (默认值)为数字键盘,此时顶部工具条中间的提示文字为\\\"数字键盘

    2023年04月16日
    浏览(73)
  • uni-app + SpringBoot +stomp 支持websocket 打包app

    websocket 协议是在http 协议的基础上的升级,通过一次http 请求建立长连接,转而变为TCP 的全双工通信;而http 协议是一问一答的请求方式方式。 websocket-uni.js

    2024年02月11日
    浏览(52)
  • uni-app 封装 websocket 并且监听心跳机制

    新建 socket.js , 将以下代码复制进去 ,向外暴露。 在入口文件中 将 socketIO 挂载在 Vue 原型上 , 也可以按需引入置顶页面 。 在需要用到webSocket的页面中使用如下方法(可根据自身业务需求进行整改) 离开页面,记得断开连接。

    2024年02月11日
    浏览(46)
  • miniprogram-to-uniapp使用指南(各种小程序项目转换为uni-app项目)

    小程序分类:uni-app qq小程序 支付宝小程序 百度小程序 钉钉小程序 微信小程序 小程序转成uni_app 小程序转为uni_app 小程序转uni_app 小程序转换 工具现在支持npm全局库、HBuilderX插件两种方式使用,任君选择,HBuilderX插件地址:https://ext.dcloud.net.cn/plugin?id=2656 【miniprogram-to-uniapp】

    2024年02月08日
    浏览(59)
  • 『UniApp』uni-app-打包成App

    大家好,我是 BNTang, 在上一节文章中,我给大家详细的介绍了如何将我开发好的项目打包为微信小程序并且发布到微信小程序商店 趁热打铁,在来一篇文章,给大家详细的介绍如何将项目打包成APP。 打包 App 也是一样的,首先需要配置关于 App 应用的基础信息,打开 manifest

    2024年02月04日
    浏览(108)
  • 【UniApp】-uni-app-打包成网页

    经过上一篇文章的介绍,已经将这个计算器的计算功能实现了,接下来就是我们项目当中的一个发包上线阶段,我模拟一下,目的就是为了给大家介绍一下,uni-app是如何打包成网页的。 除了可以打包成网页,uni-app还可以打包成小程序、App、H5、快应用等等,后面在单独开文

    2024年02月04日
    浏览(73)
  • Uniapp uni-app学习与快速上手

    个人开源uni-app开源项目地址:准备中 在线展示项目地址:准备中 什么是uni-app uni,读 you ni ,是统一的意思。 Dcloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位,致力于推进HTML5发展构建,HTML5生态。 2012年,DCloud开始研发小程序技术,优化webvie

    2024年02月09日
    浏览(64)
  • uni-app使用plus本地推送通知栏信息,不使用第三方个推实现消息在线统一推送、消息通知(MQTT、WebSocket、setInterval定时器)

    plus.push.createMessage() 因项目一直是运行在内网,所以不支持使用uni-push等运行在公网的第三方个推渠道。 那就只能使用 plus.push.createMessage() ,示例代码如下: 参数解释: content : ( String 类型) 必选,消息显示的内容,在系统通知中心中显示的文本内容。 payload : ( String 类型 ) 可

    2024年02月15日
    浏览(47)
  • 【uni-app教程】四、UniAPP 路由配置及页面跳转

    uni-app 页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue Router 方式管理路由,可在插件市场搜索 Vue-Router。 uni-app 有两种页面路由跳转

    2024年01月16日
    浏览(77)
  • 【UniApp】-uni-app-项目实战页面布局(苹果计算器)

    经过前面的文章介绍,基本上 UniApp 的内容就介绍完毕了 那么从本文开始,我们就开始进行一个项目的实战 这次做的项目是苹果计算器,这个项目的难度不是很大,但是也不是很简单,适合练手 打开 HBuilderX,点击左上角 文件 - 新建 - 项目 : 项目创建完毕之后,首先来分析

    2024年02月04日
    浏览(67)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包