uni-app 62websocket连接权限验证和强制下线

Posted 2019ab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uni-app 62websocket连接权限验证和强制下线相关的知识,希望对你有一定的参考价值。

store/modules/user.js

import $U from '@/common/free-lib/util.js';
import $H from '@/common/free-lib/request.js';
export default {
	state: {
		user: false,
		apply: {
			rows: [], 
			count: 0,
		},
		mailList:[]
	},
	actions: {
		// 登录后处理
		login({
			state,
			dispatch
		}, user) {
			// 存到状态种
			state.user = user;
			// 存储到本地存储中
			$U.setStorage('token', user.token);
			$U.setStorage('user', JSON.stringify(user));
			$U.setStorage('user_id', user.id);
			// 更新角标提示
			dispatch('updateMailBadge');
		},
		// 退出登录
		logout({
			state
		}) {
			// 清除登录状态
			state.user = false;
			// 清除本地存储数据
			$U.removeStorage('token');
			$U.removeStorage('user');
			$U.removeStorage('user_id');
			// 跳转到登录页
			uni.reLaunch({
				url: '/pages/common/login/login'
			})
		},
		// 初始化登录状态
		initLogin({
			state,
			dispatch
		}) {
			// 拿到存储的数据
			let user = $U.getStorage('user');
			if (user) {
				// 初始化登录状态
				state.user = JSON.parse(user);
				// 连接socket
				let socket = uni.connectSocket({
					url:'ws://xxx:7001/ws',
					complete:()=>{}
				})
				// 监听连接成功
				socket.onOpen(()=>{
					console.log('socket已连接')
				})
				// 监听接收信息
				socket.onMessage((res)=>{
					console.log('监听接收信息',res)
				})
				// 监听断开
				socket.onClose(()=>{
					console.log('socket已断开')
				})
				// 监听错误
				socket.onError(()=>{
					console.log('连接错误')
				})
				// 获取离线信息
				// 获取好友申请列表
				dispatch('getApply');
			}
		},
		// 获取好友申请列表
		getApply({
			state,
			dispatch
		}, page = 1) {
			$H.get('/apply/' + page).then(res => {
				if (page === 1) {
					state.apply = res
				} else {
					// 下拉刷新
					state.apply.rows = [...state.apply.rows, ...res.rows]
					state.apply.count = res.count
				}

				// 更新通讯录角标提示
				dispatch('updateMailBadge');
			});
		},
		// 更新通讯录角标提示
		updateMailBadge({
			state
		}) {
			let count = state.apply.count > 99 ? '99+' : state.apply.count.toString();
			console.log(state.apply.count);
			if (state.apply.count > 0) {
				return uni.setTabBarBadge({
					index: 1,
					text: count
				})
			}

			uni.removeTabBarBadge({
				index: 1
			})

		},
		// 获取通讯录列表
		getMailList({state}){
			$H.get('/friend/list').then(res=>{
				state.mailList = res.rows.newList ? res.rows.newList : [];
			})
		}
	},
}

以上是关于uni-app 62websocket连接权限验证和强制下线的主要内容,如果未能解决你的问题,请参考以下文章

如何验证 WebSocket 连接

如何在 C# 中验证 Websocket 连接

如何建立socket5代理服务器

验证 WebSocket 连接

由于 BoringSSL 证书验证失败,iOS 上的安全 websocket 连接失败

通过 HTTP 中间件验证 WebSocket 连接 - Golang