Browse Source

权限控制

huangxiaojing 3 years ago
parent
commit
be44c08dab
4 changed files with 197 additions and 71 deletions
  1. 66 4
      screenAndroid/WXdraw.js
  2. 4 1
      screenAndroid/WXtrialInterface.html
  3. 67 5
      screenIos/WXdraw.js
  4. 60 61
      screenIos/websocket.js

+ 66 - 4
screenAndroid/WXdraw.js

@@ -31,9 +31,11 @@ form.userCardId = parameters["userCardId"];
 form.ip = parameters["ip"];
 form.domainName = parameters["domainName"];
 var isWSS = true;
-var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken;
+var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken + "&type=directives" : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken + "&type=directives";
 var videoWidth = Number(parameters['resolvingPower']) ? Number(parameters['resolvingPower']) : 720
 var videoHeight = videoWidth === 720 ? 1280 : 1920
+var isControl = true; // 是否是观看模式
+var isAuth = parameters['authPhone']; // 是否是获取的云手机
 
 var wsss, errorTime = 0;
 var first = true;
@@ -66,6 +68,15 @@ function doConnect() {
       "type": "bitRate"
     }
     wsss.send(JSON.stringify(bitRate));
+    // 进入发起询问
+    var pings2 = {
+      "type": "forwardMsg",
+      "data": {
+        "code": "3000",
+        "desc": "询问是否有在控制" // 可选
+      }
+    }
+    wsss.send(JSON.stringify(pings2));
   };
   wsss.onerror = function (evt) {
     wsss.close();
@@ -92,6 +103,45 @@ function doConnect() {
       }
       return
     }
+    if (result.type === 'forwardMsg' && isAuth !== 'none') {
+      if (result.data.code === 4000) {
+        if (isAuth === 'huo') {
+          $.confirm("授权方已收回控制权,您进入观看屏幕模式", function () {
+            //点击确认后的回调函数
+            isControl = false;
+          }, function () {
+            isControl = false;
+            //点击取消后的回调函数
+            if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
+              tt.miniProgram.switchTab({
+                url: '/pages/home/home'
+              })
+            } else {
+              wx.miniProgram.switchTab({
+                url: '/pages/home/home'
+              })
+            }
+          });
+        } else {
+          $.confirm("当前云手机正在授控,是否请求获取云手机控制权?", function () {
+            //点击确认后的回调函数
+            var ping = {
+              "type": "forwardMsg",
+              "data": {
+                "code": "5000",
+                "desc": "控制权限收回" // 可选
+              }
+            }
+            wsss.send(JSON.stringify(ping));
+            isControl = true;
+          }, function () {
+            //点击取消后的回调函数
+            isControl = false;
+          });
+        }
+      }
+      return
+    }
   }
 }
 
@@ -114,17 +164,20 @@ $(".upload").on("click", function () {
 //home 控制home
 $(".botmat1img").on("click", function () {
   var codes = $(this).attr("data-text")
-  if (codes == "home") {
+  if (codes == "home" && isControl) {
     wsss.send(ExexuteKeyBoard(3));
-  } else if (codes == "return") {
+  } else if (codes == "return" && isControl) {
     wsss.send(ExexuteKeyBoard(4));
-  } else if (codes == "gengduo") {
+  } else if (codes == "gengduo" && isControl) {
     wsss.send(ExexuteKeyBoard(187));
   }
 
 })
 // 高清控制
 $(".PictureQuality").on("click", function () {
+  if (!isControl) {
+    return
+  }
   $(this).addClass("avit").siblings().removeClass('avit')
   var id = $(this).attr("data-id")
   var buffer = makeSharpness(Number(id));
@@ -155,6 +208,9 @@ var draw_graph = function (graphType, obj) {
   //鼠标按下获取 开始xy开始画图
   var ongoingTouches = [];
   var touchstart = function (e) {
+    if (!isControl) {
+      return
+    }
     $('.control-right-img').attr({
       "data-id": "2"
     })
@@ -184,6 +240,9 @@ var draw_graph = function (graphType, obj) {
 
   //鼠标离开 把蒙版canvas的图片生成到canvas中
   var touchend = function (e) {
+    if (!isControl) {
+      return
+    }
     var touchfor = e.originalEvent.changedTouches; //for 的手指数组
     //是否横屏
     for (var i = 0; i < touchfor.length; i++) {
@@ -211,6 +270,9 @@ var draw_graph = function (graphType, obj) {
 
   // 鼠标移动
   var touchmove = function (e) {
+    if (!isControl) {
+      return
+    }
     var touchfor = e.originalEvent.targetTouches; //for 的手指数组
     for (var i = 0; i < touchfor.length; i++) {
       var acrossWidthX = touchfor[i].pageY * (videoHeight / voheight);

+ 4 - 1
screenAndroid/WXtrialInterface.html

@@ -299,7 +299,7 @@
     var cardToken = parameters["cardToken"];
     cardToken = cardToken && cardToken.replace(/@/g, "=");
     var appletPushAddress = parameters["appletPushAddress"];
-    var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken;
+    var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken + "&type=business" : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken + "&type=business";
 
     var jmuxer = new JMuxer({
       node: 'playerVideo',
@@ -583,6 +583,9 @@
     var cutList = [];
     let timer, isFlag = true;
     function showShearPlate() {
+      if (!isControl) {
+        return
+      }
       stopManyClick(() => {
         $('.box-shear-plate').empty();
         $.ajax({

+ 67 - 5
screenIos/WXdraw.js

@@ -11,7 +11,7 @@ if (numse <= 70) {
 } else {
   var voheight = window.screen.height - topwinHeightDraw - 20
 }
-
+ 
 //画笔大小
 var resolving = 1; // 1: 竖屏;2:横屏;
 var url = window.location.href;
@@ -30,9 +30,11 @@ form.userCardId = parameters['userCardId'];
 form.ip = parameters['ip'];
 form.domainName = parameters["domainName"];
 var isWSS = true;
-var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken;
+var cUrl = isWSS ? "wss://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken + "&type=directives" : "ws://" + form.domainName + "?cardIp=" + form.ip + "&token=" + cardToken + "&type=directives";
 var videoWidth = parameters['resolvingPower'] ? parameters['resolvingPower'] : 720
 var videoHeight = parameters['resolvingPower'] === 720 ? 1280 : 1920
+var isControl = true; // 是否是观看模式
+var isAuth = parameters['authPhone']; // 是否是获取的云手机
 var wsss;
 var errorTime = 0;
 var first = true;
@@ -66,6 +68,15 @@ function doConnect() {
       "type": "bitRate"
     }
     wsss.send(JSON.stringify(bitRate));
+    // 进入发起询问
+    var pings2 = {
+      "type": "forwardMsg",
+      "data": {
+        "code": "3000",
+        "desc": "询问是否有在控制" // 可选
+      }
+    }
+    wsss.send(JSON.stringify(pings2));
   };
   wsss.onerror = function () {
     wsss.close();
@@ -98,6 +109,45 @@ function doConnect() {
       }
       return
     }
+    if (result.type === 'forwardMsg' && isAuth !== 'none') {
+      if (result.data.code === 4000) {
+        if (isAuth === 'huo') {
+          $.confirm("授权方已收回控制权,您进入观看屏幕模式", function () {
+            //点击确认后的回调函数
+            isControl = false;
+          }, function () {
+            isControl = false;
+            //点击取消后的回调函数
+            if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
+              tt.miniProgram.switchTab({
+                url: '/pages/home/home'
+              })
+            } else {
+              wx.miniProgram.switchTab({
+                url: '/pages/home/home'
+              })
+            }
+          });
+        } else {
+          $.confirm("当前云手机正在授控,是否请求获取云手机控制权?", function () {
+            //点击确认后的回调函数
+            var ping = {
+              "type": "forwardMsg",
+              "data": {
+                "code": "5000",
+                "desc": "控制权限收回" // 可选
+              }
+            }
+            wsss.send(JSON.stringify(ping));
+            isControl = true;
+          }, function () {
+            //点击取消后的回调函数
+            isControl = false;
+          });
+        }
+      }
+      return
+    }
   }
 }
 $('body').on("click", function () {
@@ -119,16 +169,19 @@ $(".upload").on("click", function () {
 //home 控制home
 $(".botmat1img").on("click", function () {
   var codes = $(this).attr("data-text")
-  if (codes == "home") {
+  if (codes == "home" && isControl) {
     wsss.send(ExexuteKeyBoard(3));
-  } else if (codes == "return") {
+  } else if (codes == "return" && isControl) {
     wsss.send(ExexuteKeyBoard(4));
-  } else if (codes == "gengduo") {
+  } else if (codes == "gengduo" && isControl) {
     wsss.send(ExexuteKeyBoard(187));
   }
 })
 // 高清控制
 $(".PictureQuality").on("click", function () {
+  if (!isControl) {
+    return
+  }
   $(this).addClass("avit").siblings().removeClass('avit')
   var id = $(this).attr("data-id")
   var cmd = {
@@ -149,6 +202,9 @@ var draw_graph = function (graphType) {
   //鼠标按下获取 开始xy开始画图
   var ongoingTouches = [];
   var touchstart = function (e) {
+    if (!isControl) {
+      return
+    }
     $('.control-right-img').attr({
       "data-id": "2"
     })
@@ -178,6 +234,9 @@ var draw_graph = function (graphType) {
 
   //鼠标离开 把蒙版canvas的图片生成到canvas中
   var touchend = function (e) {
+    if (!isControl) {
+      return
+    }
     var touchfor = e.originalEvent.changedTouches; //for 的手指数组
     //是否横屏
     for (var i = 0; i < touchfor.length; i++) {
@@ -205,6 +264,9 @@ var draw_graph = function (graphType) {
 
   // 鼠标移动
   var touchmove = function (e) {
+    if (!isControl) {
+      return
+    }
     var touchfor = e.originalEvent.targetTouches; //for 的手指数组
     for (var i = 0; i < touchfor.length; i++) {
       var acrossWidthX = touchfor[i].pageY * (videoHeight / voheight);

+ 60 - 61
screenIos/websocket.js

@@ -3,80 +3,79 @@ var parameters = GetRequest();
 var ip = parameters["ip"];
 var appletPushAddress = parameters["appletPushAddress"];
 var cardToken = parameters["token"];
-cardToken = cardToken && cardToken.replace(/@/g,"=");
-cardToken = cardToken.replace(/\$/g, "+");
+cardToken = cardToken && cardToken.replace(/@/g, "=");
 var isWSS = true;
 var errorTime = 0;
-var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken;
+var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken + "&type=business" : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken + "&type=business";
 var intervaler;
 doConnect();
 
 function throttle(fn, delay) {
-	var flag = true;
-	errorTime += delay;
-	return () => {
-		if (!flag) return;
-		flag = false;
-		timer = setTimeout(() => {
-			fn();
-			flag = true;
-		}, delay);
-	};
+  var flag = true;
+  errorTime += delay;
+  return () => {
+    if (!flag) return;
+    flag = false;
+    timer = setTimeout(() => {
+      fn();
+      flag = true;
+    }, delay);
+  };
 }
 
 function doConnect() {
-	var ws = new WebSocket(socketURL);
-	ws.binaryType = 'arraybuffer';
-	intervaler = setInterval(() => {
-		if (ws.readyState === 1) {
-			ws.send("ping");
-		} else {
-			clearInterval(intervaler);
-			self.postMessage('close');
-		}
-	}, 3000);
-	ws.onerror = function () {
-		ws.close();
-		clearInterval(intervaler);
-		throttle(doConnect, 100);
-		if (errorTime > 1000) {
-			self.postMessage('close');
-		}
-	}
+  var ws = new WebSocket(socketURL);
+  ws.binaryType = 'arraybuffer';
+  intervaler = setInterval(() => {
+    if (ws.readyState === 1) {
+      ws.send("ping");
+    } else {
+      clearInterval(intervaler);
+      self.postMessage('close');
+    }
+  }, 3000);
+  ws.onerror = function () {
+    ws.close();
+    clearInterval(intervaler);
+    throttle(doConnect, 100);
+    if (errorTime > 1000) {
+      self.postMessage('close');
+    }
+  }
 
-	ws.addEventListener('open', function (event) {
-		var verifyBuffer = VerifyCode('RK3923C1201900139', cardToken);
-		ws.send(verifyBuffer);
-	});
+  ws.addEventListener('open', function (event) {
+    var verifyBuffer = VerifyCode('RK3923C1201900139', cardToken);
+    ws.send(verifyBuffer);
+  });
 
-	ws.addEventListener('message', function (event) {
-		var input = new Uint8Array(event.data);
-		if (input[0] == 0xff) {
-			self.postMessage(input);
-		} else {
-			self.postMessage(input);
-		}
-	});
+  ws.addEventListener('message', function (event) {
+    var input = new Uint8Array(event.data);
+    if (input[0] == 0xff) {
+      self.postMessage(input);
+    } else {
+      self.postMessage(input);
+    }
+  });
 
-	self.addEventListener('message', function (e) {
-		if (e === 'close') {
-			clearInterval(intervaler);
-			ws.close();
-		} else {
-			ws.send(e.data);
-		}
-	}, false);
+  self.addEventListener('message', function (e) {
+    if (e === 'close') {
+      clearInterval(intervaler);
+      ws.close();
+    } else {
+      ws.send(e.data);
+    }
+  }, false);
 }
 
 function GetRequest() {
-	var url = location.search; // 获取url中"?"符后的字串
-	var obj = new Object();
-	if (url.indexOf("?") != -1) {
-		var str = url.substr(1);
-		strs = str.split("&");
-		for (var i = 0; i < strs.length; i++) {
-			obj[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
-		}
-	}
-	return obj;
+  var url = location.search; // 获取url中"?"符后的字串
+  var obj = new Object();
+  if (url.indexOf("?") != -1) {
+    var str = url.substr(1);
+    strs = str.split("&");
+    for (var i = 0; i < strs.length; i++) {
+      obj[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
+    }
+  }
+  return obj;
 }