【问题标题】:RTCPeerConnection and createDataChannel not working for EdgeRTCPeerConnection 和 createDataChannel 不适用于 Edge
【发布时间】:2019-02-05 06:09:30
【问题描述】:

我一直在开发一个应用程序,当一个人登录帐户时,设备的 IP 地址存储在后端和本地存储中。然后当一个人从另一个浏览器登录同一个帐户时,它会显示一个带有最后登录IP地址的弹出窗口。它似乎适用于 chrome 和 Mozilla,但不适用于边缘浏览器。它总是返回 null 因为它没有在 pc.createDataChannel 之后输入代码。

代码sn-p如下。

const getIpAddress = state => {
    window.RTCPeerConnection = window.RTCPeerConnection || 
window.mozRTCPeerConnection || window.webkitRTCPeerConnection || false;
let ip = false;
if (window.RTCPeerConnection) {
    ip = [];
    var pc = new RTCPeerConnection({ iceServers: [] }), noop = function 
() {
    };
    pc.createDataChannel('');
    pc.createOffer(pc.setLocalDescription.bind(pc), noop);
    pc.onicecandidate = function (event) {
        if (event && event.candidate && event.candidate.candidate) {
            var s = event.candidate.candidate.split('\n');
            ip.push(s[0].split(' ')[4]);
            localStorage.setItem('ipV4Address', ip[0]);
        }
    };
}
return state;
};

我也尝试过使用适配器 js,但不知道如何准确使用它。

【问题讨论】:

    标签: reactjs redux ip-address rtcpeerconnection


    【解决方案1】:

    Edge v18 浏览器尚不完全支持 WebRTC 点对点连接。您可以在Can I use RTCPeerConnection ?查看您的浏览器是否兼容

    【讨论】:

    • 我经历了另一个线程,他们建议使用适配器 js,即 webrtc pollyfill。知道如何准确地使用它来解决边缘支持问题吗?
    • 我还没和adapter.js合作过,你可以试试official WebRTC polyfill
    【解决方案2】:

    似乎没有办法在edge浏览器中实际获取私有ip,所以不得不使用第三方api获取公共ip并使用它。

    【讨论】:

    • 获取该公共 ip 的第三方库是什么?
    猜你喜欢
    • 2019-02-21
    • 2018-04-02
    • 2016-08-03
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    相关资源
    最近更新 更多