uniapp使用uni自带websocket进行即时通讯
创始人
2025-01-16 22:33:31
0

最近再办一个uniapp做的即时通讯,把其中思路记载一下。

技术栈采用uniapp+uview+vue2进行开发。

一、使用uni封装好的websocket。

下面的从uniapp官网截图的Api

 uni.connectSocket() :这个方法可以让我们创建一个webSocket的连接,里面包含几个参数,url是写ws的连接地址,没有的话肯定是连接不上服务器,其他的没用过。用的时候再看。

// 创建webSocket this.webSocketTask = uni.connectSocket({ 	url: '这里面写的是连接地址', 	header: { 	    'content-type': 'application/json' 	}, 	success(res) { 		console.log('成功', res); 	}, })

我们在data中定义一个webSocket:null,然后把websocket对象赋给他,以供下面的方法使用。

 uni.onSocketOpen()是用来监听websocket连接成功的事件,方法里面跟一个回调函数,可以通过res参数拿到响应头。

//监听WebSocket连接打开事件 this.webSocketTask.onOpen((res) => { 	console.info("监听WebSocket连接打开事件", res) });

 这个没用过,过!!!

 通过uni.onSocketMessag()可以接收到服务器返回的消息。

//接收websocket消息及处理 this.webSocketTask.onMessage((res) => { 	let data = JSON.parse(res.data); //判断服务器返回的type类型 	switch (data.type){ 		//如果返回的ping,说明服务端ping客户端 		case 'ping':             //我们要给服务器说一个pong告诉服务器我还活着 			this.webSocketTask.send({ 				data: JSON.stringify({ 					type: 'pong' 				}) 			}); 			break; 		//登录更新用户列表         //如果type是init,说明服务器知道我们活着,给我们传一个标识,我们通过这个标识去请求接口,                                       建立唯一链接。 		case 'init': 			uni.setStorageSync('client_id', data.client_id); 			this.$u.post('common/pub/bindUid',{ 				client_id: data.client_id, 				user_id: this.userId 			}).then(res => { 				this.webSocketTask.send({ 					data: JSON.stringify({ 						type: 'bindUid', 						user_id:2 					}) 				}); 			}); 			break; 		case 'simple': 			this.userList.push(data.data) 			this.scrollToBottom() 			break; 		case 'group': 			this.userList.push(data.data) 			this.scrollToBottom() 			break 	}

这个的话按官方文档说的就是需要卸载uni。onSocketOpen回调里面才行。但是我直接通过实例对象发也可以。

this.webSocketTask.send({ 	data: JSON.stringify({type: 'pong'}) });

注意:websocket只能接收字符串,记得转换类型

这个就是关闭连接,写在onUnload钩子中就行

onUnload(){ 	uni.closeSocket({ 		success:() => { 			console.info("退出成功") 		}, 	}) },

 最后一个就是监听websocket是否关闭。

uniapp官网文档:uni.connectSocket(OBJECT) | uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/api/request/websocket.html

uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/api/request/socket-task.html完整代码:

onLoad(){     this.socket() };   methods:{     socket(){     //创建webSocket     this.webSocketTask = uni.connectSocket({ 	    url: 'ws地址', 		header: { 			'content-type': 'application/json' 		}, 		success(res) { 			console.log('成功', res); 		}, 	})  	// 监听WebSocket连接打开事件 	this.webSocketTask.onOpen((res) => { 		console.info("监听WebSocket连接打开事件", res) 	});  	// 监听WebSocket错误 	uni.onSocketError((res) => { 		console.info("监听WebSocket错误" + res) 	}); }  onShow(){     // 接收websocket消息及处理     this.webSocketTask.onMessage((res) => { 		let data = JSON.parse(res.data); 		switch (data.type) { 			// 服务端ping客户端 			case 'ping': 				this.webSocketTask.send({ 					data: JSON.stringify({ 						type: 'pong' 					}) 				}); 				break; 			// 登录 更新用户列表 			case 'init': 				uni.setStorageSync('client_id', data.client_id); 				this.$u.post('接口', { 					client_id: data.client_id, 					user_id: this.userId 				}).then(res => { 					this.webSocketTask.send({ 						data: JSON.stringify({ 							type: 'bindUid', 							user_id: this.userId 						}) 					}); 				}); 				break; 			case 'simple': 				this.userList.push(data.data) 				this.scrollToBottom() 				break; 			case 'group': 				// this.groupMenuList() 				this.userList.push(data.data) 				this.scrollToBottom() 				break 		}  	}); }  onUnload() { 	uni.closeSocket({ 		success: () => { 			console.info("退出成功") 		}, 	}) },

只是个人简单记录!!!

相关内容

热门资讯

一分钟了解!!wepoke透明... 一分钟了解!!wepoke透明挂哪里有(黑科技)外挂ai代打辅助软件(有挂实锤)-哔哩哔哩1、完成w...
黑科技安装!德州之星外挂(透视... 黑科技安装!德州之星外挂(透视)透明教程(2024已更新)(哔哩哔哩)亲,关键说明,德州之星外挂赛季...
辅助黑科技(wepoke软件透... 辅助黑科技(wepoke软件透明功能教程)外挂透明挂辅助神器(透视)真是是有挂(有挂方略)-哔哩哔哩...
黑科技私人局!微扑克脚本代写(... 黑科技私人局!微扑克脚本代写(透视)透牌教程(2023已更新)(哔哩哔哩);1、微扑克脚本代写系统规...
玩家必备科技!!wpk外挂(黑... 玩家必备科技!!wpk外挂(黑科技)外挂ai代打辅助黑科技(有挂总结)-哔哩哔哩1、打开德州poke...
黑科技科技(微扑克辅助器ios... 黑科技科技(微扑克辅助器ios)外挂透明挂辅助工具(透视)果然是真的有挂(有挂神器)-哔哩哔哩小薇(...
黑科技攻略(微扑克ai机器人打... 黑科技攻略(微扑克ai机器人打德州)外挂透明挂辅助助手(透视)好像存在有挂(存在有挂)-哔哩哔哩1、...
黑科技免费!wepoke透明挂... 黑科技免费!wepoke透明挂怎么识别(透视)必备教程(2024已更新)(哔哩哔哩)wepoke透明...
教学盘点!wopoker辅助软... 1、教学盘点!wopoker辅助软件(黑科技)外挂黑科技ai辅助工具(的确有挂)-哔哩哔哩;该软件可...
黑科技有挂(轰趴大菠萝十三水有... 黑科技有挂(轰趴大菠萝十三水有外挂)外挂透明挂辅助器(透视)竟然存在有挂(发现有挂)-哔哩哔哩1、轰...