当前位置: 代码网 > it编程>App开发>uniapp > 封装webSocket(uniapp)

封装webSocket(uniapp)

2024年08月03日 uniapp 我要评论
前端封装websocket

使用uniapp封装websocket请求
大同小异,vue封装也差不多

request.js文件

const socketbaseurl = 'wss://test.com/xxxxxdfjksdjfl' //后端给你的socket接口



export function websocket(url, data, readcb, messagecb, finishedcb) {
	//开始连接websocket 
	const sockettask = uni.connectsocket({
		url: socketbaseurl + url + data.id //socket接口和地址和后端需要你传的内容
		success: res => console.log(res), //请求成功
		fail: e => console.log(e) //请求失败
	})
	//websocket 连接打开事件
	sockettask.onopen(res => {
		//连接后发送数据
		sockettask.send({
			data: data.datastr
		})
		//返回
		readcb(res, sockettask)
	})
	//websocket 接收到服务器的消息事件
	sockettask.onmessage(res => {
		//返回
		messagecb(res, sockettask)
	})
	//websocket 错误事件
	sockettask.onerror(e => {
		console.log('socket error: ', e)
	})
}

//导出接口
export const sendapi = (data,  readcb , messagecb ,finishedcb) => websocket('/message/', data, readcb, messagecb, finishedcb)

使用:
例:test.js

import { sendapi } from '@/request.js';

export default{
	data(){
		return{
			sockettask:'',
		}
	},
	methods:{
		handle(){
			//传给后端的数据
			let info = {id:5,datastr:'test'}
			
			//调接口
			sendapi(
					info,
					(_, sockettask) => {
						//调取赋值socket,用于后面关闭连接
						this.sockettask = sockettask;
					},
					(res) => {
						try {
						 	//解析返回数据
							const socketres = json.parse(res.data)
							//打印返回数据
							console.log(socketres)
							
							//接收返回的数据后,关闭socket
							this.sockettask.close();
							
						} catch (e) {
							// 返回异常,关闭socket
							this.sockettask.close(); 
						}
					}
			)
			
		};
	}


}



(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com