拍照测评使用websocket

news/2024/11/8 2:48:19/

为什么拍照测评要使用ws协议来做;

  • 因为要实时 返回数据 , 评测过程中数据能动态展示;
  • 比如进度条功能 、教培评测的单字评测实时渲染

拍照测评的流程

1,获取相机和本地相册权限

uni.getSetting({success: (res) => {// 如果没有相机权限if (!res.authSetting["scope.camera"]) {uni.authorize({scope: 'scope.camera',success(res) {// 打开相机that.showCamera = true;},fail(){uni.showModal({content: '检测到您没打开获取相机功能权限,是否去设置打开?',confirmText: "确认",cancelText: '取消',success: (res) => {},fail(){}})}})}}
}

2,页面初始化的时候,初始化websocket;

initWebSocket(){let url = this.$apiHub.ws + 'xxxxxxxx'// 链接websocketuni.connectSocket({url: url,header: {Origin: 'xxxxxxxxxxxxxxx.com'},success() {console.log('webSocket链接成功')},fail: err => {console.log('webSocket链接失败')}})// 打开了websocketuni.onSocketOpen(res => {this.reconnectCount = 5;// 使用定时函数做一个心跳机制每五秒发送一次ping,与此同时返回pongthis.heartbeat = setInterval(() => {this.sendMsg('ping') // }, 5000)});// websocket链接打开失败uni.onSocketError(res => {//停止发送心跳clearInterval(this.heartbeat)//如果不是人为关闭的话,进行重连if (!this.socketClose) {this.reconnect(url)}});// websocket链接关闭uni.onSocketClose(e => {clearInterval(this.heartbeat)if (!this.socketClose) {this.reconnect(url)}});// websocket接受消息,做一些处理uni.onSocketMessage(res => {if (res.data && res.data !== 'pong') {let resd = JSON.parse(res.data);if (resd.msg.progressRate) {this.precent = resd.msg.progressRate;}}})
}

3,发送消息到websocket

sendMsg(msg) {if(msg != 'ping'){// msg = JSON.stringify(msg)}// 发送的消息 msgtry {uni.sendSocketMessage({data: msg})} catch (e) {// 发送消息失败-关闭链接uni.closeSocket()}
},

4,上传完图片的时候调用 sendMsg() 发送消息

let cos = new COS({SecretId: 'xxxx',SecretKey: 'xxxxx'
})
const that = this;
cos.postObject({Bucket: 'ccccc',Region: 'ap-ssss',Key: 'ssss/aaaaaa/' + Date.parse(new Date()) + '/' + '.png',FilePath: this.image}, function(err, data) {this.sendMsg(JSON.stringify(data))}
});

http://www.ppmy.cn/news/752947.html

相关文章

电脑时常断网和掉线的解决方法

一、检查网线是否松动 对于大多数宽带用户来说,ADSL猫接无线路由器的布网方式最为普遍,当出现掉线的情况,首先要考虑的是线路问题。 由于电话线线路过长,接头过多,或存在一些干扰源,很可能引发掉线&#xf…

服务器不稳定 同时登录的人太多,魔兽世界频繁掉线的三种原因及解决方法

我们在玩魔兽世界时可能会遇到频繁掉线或者长时间无法登陆的问题。很多人都不知道是什么原因导致我们玩魔兽世界时候掉线,也不知道采取什么方法来解决这样的问题;小编收集整理了导致游戏掉线的原因,并从电脑配置方面,服务器工作状…

超声波功率放大器在超声驱动技术中的应用

超声波功率放大器是一种能够将低功率信号放大到足够高的电平的电子器件。在超声驱动技术中,超声波功率放大器被广泛应用于超声波发生器、超声波换能器和超声波传感器等部件中,以保证这些部件的正常工作和高效性能。 超声波功率放大器在超声驱动技术中的应…

leetcode:面试题 递归乘法(位运算详解)

内容包括:题目,代码实现及注释,思路详解 目录 题目: 代码实现: 思路详解: 题目: 递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号…

基于flask-oidc的OIDC协议授权码模式单点登录SSO实现

文章目录 安装flask-oidcflask-oidc实现OIDC的授权码模式流程代码实现依赖库安装flask-oidc认证配置获取授权码兑换token令牌 关于SSO单点登录、OIDC协议、授权码模式等相关概念详见基于OIDC的SSO单点登录文章内容 安装flask-oidc pip install flask-oidcflask-oidc实现OIDC的…

仿oppo手机浏览器首页的滑动布局

仿oppo手机浏览器首页的滑动布局 原效果图我大概实现的样子这个其实主要是一些事件分发的一些处理 周末的午后,我悠然的躺着床上,甚是无聊,拿起我的oppo手机,打开浏览器准备输入我熟悉的xxx .com, 忽然我发现了一个比较…

深度学习神经网络学习笔记-论文研读-transformer及代码复现参考

摘要 优势序列转导模型基于复杂的循环或包括一个编码器和一个解码器的卷积神经网络。最好的表现良好的模型还通过attention 连接编码器和解码器机制。我们提出了一种新的简单的网络架构,Transformer, 完全基于注意力机制,省去了递归和卷积完…

uni-app和web-view页面相互传参

在uni-app中,可以通过uni.navigateTo和uni.redirectTo等方法跳转到其他页面,并且可以通过url参数进行页面间的参数传递。而在web-view页面中,可以通过url的query参数进行参数传递。 下面是一个示例,演示了uni-app页面和web-view页…