JS获取本机IP的工具类

JS获取本机IP的工具类

/**
 * 获取ip地址
 */
export function getUserIP(onNewIP) { //  onNewIp - 回调函数
    //兼容for firefox and chrome
    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
    var pc = new myPeerConnection({
            iceServers: []
        }),
        noop = function () {
        },
        localIPs = {},
        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]) onNewIP(ip);
        localIPs[ip] = true;
    }

    //创建虚假数据通道
    pc.createDataChannel("");

    // create offer and set local description
    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);
    });

    //监听候选人事件
    pc.onicecandidate = function (ice) {
        if (ice.candidate === null) return;
        else {
            if (ice.candidate.candidate.match(ipRegex) === null) {
                iterateIP('0.0.0.0')
            } else {
                ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
            }
        }


    };
}

方法调用

import {getUserIP} from '@/util/service/getIP.js'
        getUserIP((ip) => {
         alert(ip)
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值