init
This commit is contained in:
72
src/assets/js/utils.js
Normal file
72
src/assets/js/utils.js
Normal file
@@ -0,0 +1,72 @@
|
||||
const utils = {
|
||||
getUserIP: function () {
|
||||
var MyPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
|
||||
var pc = new MyPeerConnection({
|
||||
iceServers: []
|
||||
})
|
||||
var noop = function () {}
|
||||
var localIPs = {}
|
||||
var newObj = {}
|
||||
var ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g
|
||||
function iterateIP (ip) {
|
||||
if (!localIPs[ip]) localStorage.setItem('localip', ip)
|
||||
localIPs[ip] = true
|
||||
newObj['ip'] = ip
|
||||
}
|
||||
pc.createDataChannel('')
|
||||
pc.createOffer().then(function (sdp) {
|
||||
sdp.sdp.split('\n').forEach(function (line) {
|
||||
if (line.indexOf('candidate') < 0) return
|
||||
line.match(ipRegex).forEach(iterateIP)
|
||||
})
|
||||
pc.setLocalDescription(sdp, noop, noop)
|
||||
}).catch(function (reason) {
|
||||
// An error occurred, so handle the failure to connect
|
||||
})
|
||||
pc.onicecandidate = function (ice) {
|
||||
if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return
|
||||
ice.candidate.candidate.match(ipRegex).forEach(iterateIP)
|
||||
}
|
||||
return newObj
|
||||
},
|
||||
// 小数加法
|
||||
accAdd (arg1, arg2) {
|
||||
var r1, r2, m, c
|
||||
try {
|
||||
r1 = arg1.toString().split('.')[1].length
|
||||
} catch (e) {
|
||||
r1 = 0
|
||||
}
|
||||
try {
|
||||
r2 = arg2.toString().split('.')[1].length
|
||||
} catch (e) {
|
||||
r2 = 0
|
||||
}
|
||||
c = Math.abs(r1 - r2)
|
||||
m = Math.pow(10, Math.max(r1, r2))
|
||||
if (c > 0) {
|
||||
var cm = Math.pow(10, c)
|
||||
if (r1 > r2) {
|
||||
arg1 = Number(arg1.toString().replace('.', ''))
|
||||
arg2 = Number(arg2.toString().replace('.', '')) * cm
|
||||
} else {
|
||||
arg1 = Number(arg1.toString().replace('.', '')) * cm
|
||||
arg2 = Number(arg2.toString().replace('.', ''))
|
||||
}
|
||||
} else {
|
||||
arg1 = Number(arg1.toString().replace('.', ''))
|
||||
arg2 = Number(arg2.toString().replace('.', ''))
|
||||
}
|
||||
return (arg1 + arg2) / m
|
||||
},
|
||||
// 乘法
|
||||
accMul (arg1, arg2) {
|
||||
var m = 0
|
||||
var s1 = arg1.toString()
|
||||
var s2 = arg2.toString()
|
||||
try { m += s1.split('.')[1].length } catch (e) {}
|
||||
try { m += s2.split('.')[1].length } catch (e) {}
|
||||
return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m)
|
||||
}
|
||||
}
|
||||
export default utils
|
||||
Reference in New Issue
Block a user