首页 > 其他分享 >WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

时间:2023-05-12 09:57:41浏览次数:42  
标签:TypeError const candidate read peerConnection null event

WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

临时接了个任务,客户要求某个账号只能在某个ip或者mac上登录,其余的情况的登录都要报错,首先就要解决看看怎么获取ip

使用的获取IP的语句如下,类似的在网上很多,主要的获取的逻辑都是一样的

    <script>
        // 创建 RTCPeerConnection 对象
        const peerConnection = new RTCPeerConnection();
        // 添加一个空的数据通道
        peerConnection.createDataChannel('dummy');
        // 创建一个 ICE 候选对象
        peerConnection.onicecandidate = (event) => {
            if (event.candidate) {
                // 提取 IP 地址信息
                //const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
                const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/;
                console.log("event.candidate.candidate :" + event.candidate.candidate);
                //candidate:3088297775 1 udp 2113937151 4b52bd75-3d6f-4c7b-8bea-394c6d2a14d3.local 60294 typ host generation 0 ufrag mKXg network-cost 999
                const ipAddress = ipRegex.exec(event.candidate.candidate)[1];
                // 输出 IP 地址
                console.log('IP 地址:', ipAddress);
                // 关闭连接
                peerConnection.close();
            }
        };
        // 创建一个 SDP(Session Description Protocol)提议
        peerConnection.createOffer().then((offer) => {
            // 设置本地描述
            return peerConnection.setLocalDescription(offer);
        }).catch((error) => {
            console.error('创建 Offer 失败:', error);
        });
    </script>

但是在edge和Chrome上执行的时候会报错,提示
Uncaught TypeError: Cannot read property '1' of null

因为说实话不是很熟悉前端,但是大概能猜到是null导致的

那么就去找是哪里null了

很快就发现,貌似那个正则并没有匹配到数据,所以要不是匹配的规则有问题,要不就是要匹配的内容有问题

很快发现,candidate的内容中并没有ip类型的数据,反而有一个.local

在网上查了一下,发现就是这部分的问题,原因是浏览器做了相应的设置,但是很难受,因为这种操作不适用我这种系统要给客户使用的情况,总不能每个人都要改设置才可以

只能另寻他路

https://blog.csdn.net/weixin_43915401/article/details/111830699

标签:TypeError,const,candidate,read,peerConnection,null,event
From: https://www.cnblogs.com/jokingremarks/p/17392913.html

相关文章

  • reads、contigs、k-mer之间的区别
    "Reads"(序列)是指从DNA测序技术中得到的短片段DNA序列。通常这些序列长度较短,可能只有几百个碱基对长。"Contigs"(连读)是通过将读取序列拼接在一起来形成更长的序列。Contigs相对较长,可能达到数千个碱基对长,但它们可能仍然缺少一些重要的信息,例如重复序列或缺失区域。"k-mers"(k个......
  • STM32裸机移植RT-Thread(标准版)
    前言,因为我嫌正点原子stm32l475vet6(潘多拉)给的rt-thread太过臃肿,决定自己移植一遍(RT-Thread包来自正点原子中潘多拉例程)参考了野火rt-thread的手册1、建立工程文件夹,如下      CoreCore/IncCore/src用于存放用户自己的.c和.h文件 Dri......
  • DNA测序中的reads mapping方向的信息
    在DNA测序中,readsmapping方向指的是描绘short-reads(短序列)对于参考基因组的比对方向,即将短读序列与参考基因组进行比对时匹配的方向。这个方向信息通常被编码为“+”或“-”,其中“+”表示reads的5'端与正向链的3'端相对应,“-”表示reads的5'端与负向链的3'端相对应。具体来说,在......
  • Readability下周一在Amazon Appstore独家推出
          上个星期我们介绍了一款能将网页制作成电子书的浏览器Readability,当时这一应用只有iOS版本,而现在这一应用的Android版本也即将推出,对于Android用户来说真是个好消息。         Readability的主要竞争对手包括ReaditLater和Instapaper,前者是一个原生Andr......
  • python 报错:TypeError: only integer scalar arrays can be converted to a scalar in
    defconvolution(initial_img,kernal):img=np.zeros((initial_img.shape[0],initial_img.shape[1])).astype(np.uint8)forxinrange(1,initial_img.shape[0]-1):foryinrange(1,initial_img.shape[1]-1):temp=np.zeros([3,3......
  • requests标头在json序列化时报错TypeError: Object of type CaseInsensitiveDict is n
    requests的作者似乎为了解决header里大小写兼容的问题,而创建了大小写不敏感的数据结构CaseInsensitiveDict,具体分析可以参见:详解Requests中的数据结构CaseInsensitiveDict。requests返回的response_header即是一个CaseInsensitiveDict类型,而且我们知道response_header里通常并非......
  • Python多线程(multithreading)
    1.threading模块Python3线程中常用的两个模块为:_thread,threading(推荐使用).thread模块已被废弃,为了兼容性,Python3将thread重命名为_thread,即通过标准库_thread和threading提供对线程的支持。_thread提供了低级别的、原始的线程以及一个简单的锁,它相比于threading模块的功能还......
  • 2020-07-30-python-multithreading&multiprocessing
    注:参考Python多线程多进程那些事儿看这篇就够了~~进程、线程进程和线程简单举例:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要......
  • 【问题解决】Kafka报错 Bootstrap broker x.x.x.x:9092 (id: -1 rack: null) disconne
    问题复现近日针对某一客户需求开发了一个需要使用Kafka的功能,功能是什么暂且不论,在本地虚机的Kafka连接一切正常遂放到测试服务器上验证功能,以下是监听topic成功和警告报错:2023-05-0910:22:23[localhost-startStop-1]INFOorg.apache.kafka.clients.consumer.ConsumerConfig......
  • Qt XML读写之 QXmlStreamReader、QXmlStreamWriter
    OverviewQtXML将不再接收额外的功能。对于迭代地读取或编写XML文档(SAX),Qt建议使用QtCore的QXmlStreamReader和QXmlStreamWriter类。这些类既易于使用,又更符合XML标准。但是遗憾的是如果想修改更新XML文档,这个模块没有提供解决方案,还只能使用QDomDocument。QXmlStreamReader类......