it编程 > App开发 > uniapp

封装webSocket(uniapp)

164人参与 2024-08-03 uniapp

使用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)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

uniapp 自定义tabBar

08-03

uniapp视频层级问题

08-02

WPF HandyControl 界面交互反馈:对话框+加载框+列表选择

08-02

【uniapp】开发微信小程序自定义底部tabbar

08-01

uniapp中自定义tabbar无法跳转?如何解决

08-06

App前端开发跨平台框架比较:React Native、Flutter、Xamarin等

07-28

猜你喜欢

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

发表评论