mounted()?{
????this.getUserIP(ip?=>?{
//data定義ip ,獲取本機(jī)ip
??????this.ip=?ip;
????});
??},
methods:{
//?獲取本機(jī)ip
????getUserIP(onNewIP)?{
??????let?MyPeerConnection?=
????????window.RTCPeerConnection?||
????????window.mozRTCPeerConnection?||
????????window.webkitRTCPeerConnection;
??????let?pc?=?new?MyPeerConnection({
????????iceServers:?[]
??????});
??????let?noop?=?()?=>?{};
??????let?localIPs?=?{};
??????let?ipRegex?=?/([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g;
??????let?iterateIP?=?ip?=>?{
????????if?(!localIPs[ip])?onNewIP(ip);
????????localIPs[ip]?=?true;
??????};
??????pc.createDataChannel("");
??????pc.createOffer()
????????.then(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(reason?=>?{});
??????pc.onicecandidate?=?ice?=>?{
????????if?(
??????????!ice?||
??????????!ice.candidate?||
??????????!ice.candidate.candidate?||
??????????!ice.candidate.candidate.match(ipRegex)
????????)
??????????return;
????????ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
??????};
????},
}