uniapp通过WebSocket与设备通讯

该代码段展示了如何使用uni-app框架创建WebSocket客户端,包括连接服务器、发送消息、接收消息、处理连接状态变化以及关闭连接的功能。当WebSocket连接打开时,客户端会显示已登录状态,并在接收到服务端消息时将其添加到显示列表中。如果连接中断或出错,客户端会在5秒后尝试重新连接。
摘要由CSDN通过智能技术生成
<template>
	<view class="content">
		<button @click="open()">连接</button>
		<button @click="sendMessage('11')">发送</button>
		<button @click="closeSocket()">关闭</button>
		<button @click="message=[]">清除数据</button>
		<view class="data">
			<view v-for="(e,i) in message" :key="i">{{e}}</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				isLogin: false,
				url: 'ws://192.168.4.1:9988',
				ST: false,
				isOpen: false,
				timer: null,
				message: []
			}
		},
		onLoad() {
			this.open()
		},
		methods: {
			open() {
				this.closeSocket();
				this.ST = uni.connectSocket({
					url: this.url,
					complete: (e) => {},
					fail: (f) => {
						console.log(f);
					},
					success: (s) => {
						console.log(this.ST);
						if (!this.ST) {
							console.log(this.ST);
							return //防止错误open
						}
						uni.onSocketOpen((res) => {
							console.log('WebSocket连接已打开!');
							this.isLogin = true
							console.log('连接成功');
						});

						uni.onSocketMessage((res) => {
							console.log('接收到服务端发送的消息', res.data);
							this.message.push(res.data);
						})
						uni.onSocketOpen(function(res) {
							console.log('WebSocket连接已打开!');
						});
						uni.onSocketClose((res) => {
							console.log(res);
							if (!this.ST) {
								return;
							}
							uni.showToast({
								title: '与服务器连接中断,请重新刷新页面!',
								icon: 'loading'
							})
							clearInterval(this.t1);
							this.isLogin = false
							this.ST = false;
							this.timer = setTimeout(() => {
								this.open()
							}, 5000)
						});
						uni.onSocketError((res) => {
							if (!this.ST) {
								return;
							}
							uni.showToast({
								title: '与服务器连接错误,请重新刷新页面!',
								icon: 'loading'
							})
							this.isLogin = false
							this.ST = false
							this.timer = setTimeout(() => {
								this.open()
							}, 5000)
						});
					}
				});
			},
			//发送消息
			sendMessage(msg) {
				uni.sendSocketMessage({
					data: msg,
					success(res) {
						console.log(res);
						console.log('消息发送成功!')
					},
					fail(err) {
						console.log(err);
						console.log('消息发送失败!')
					}
				})
			},
			//关闭连接
			closeSocket() {
				//关闭socket连接
				this.ST = false;
				clearTimeout(this.timer);
				uni.closeSocket({
					success(res) {
						this.is_open_socket = false;
						console.log("关闭成功", res)
					},
					fail(err) {
						console.log("关闭失败", err)
					}
				});
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	button {
		margin: 10rpx 0;
	}

	.data {
		border: 1rpx solid #000;
		width: 90%;
		padding: 10rpx;
		margin: 10rpx auto;
		box-sizing: border-box;

		view {
			padding: 10rpx;
		}
	}
</style>

客户端与服务端必须连接同一个wifi

Uniapp是一种跨平台的开发框架,可以同时开发iOS、Android和Web应用程序。SpringBoot是一个Java开发框架,用于快速构建独立的、基于Java的应用程序。Websocket是一种在客户端和服务器之间进行双向通信的协议。在Uniapp中,可以使用SpringBoot集成Websocket实现消息推送。 在使用Uniapp和SpringBoot集成Websocket实现消息推送时,可以按照以下步骤进行配置和实现: 1. 在SpringBoot中进行配置: a. 添加相关依赖:根据引用中的提示,配置项目的依赖。 b. 进行Websocket配置:根据引用中的提示,配置Websocket相关的参数,如监听路径等。 c. 编写测试控制层:根据引用中的提示,编写测试控制层代码,用于处理Websocket的连接和消息发送。 2. 在Uniapp中进行配置: 可以根据具体需求,在Uniapp项目中添加相关的Websocket配置,如连接地址、消息处理等。 3. 在生产环境中进行Nginx配置: 如果需要将Uniapp和SpringBoot部署到生产环境中,可以根据引用中的提示,进行Nginx的配置,以实现反向代理和负载均衡。 通过以上步骤,就可以实现Uniapp和SpringBoot的集成,使用Websocket实现消息推送功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【SpringBoot学习】43、SpringBoot 使用 Uniapp 集成 Websocket 实现消息推送](https://blog.csdn.net/qq_38762237/article/details/124492028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值