Vue实战041:获取当前客户端IP地址详解

时间:2024-10-21 07:55:36

1、外网IP和内网IP的区别1,外网IP是全球唯一的IP地址,仅分配给某一台网络设备。内网IP是由路由器分配给每一台设备内部使用的IP地址;2,外网IP任何一台设备都可以ping通。内网IP只有在同一环境的内部设备才能ping通;3,外网用户无法直接访问到内网用户,内网用户可以访问外网用户,因为内网的所有用户都是通过同一个外网IP进行上网的;

2、如何获取外网IP这里我们可以借助现成的一个JS接口获取IP地址,我们只需在入口index.html中直接引入该接口即可轻松获取到当前用户的外网ip,Vue中在public中的index.html中引入接口,然后再需要获取的地方通过returnCitySN['cip']即可拿到IP地址,然后将IP存到localstorage或者Vuex中,这样随时可以调用了。

Vue实战041:获取当前客户端IP地址详解

3、如何获取内网IP获取内网IP相对来说会翱务校肢复杂些,毕竟没有现成的接口可以调用,这里我们用到了WebRTC(网页即时通信),在WebRTC规范中,RTCPeerConnection可以用于视频流/音频流、以及数据的传输。这里们通过RTCPeerConnection 对象建立一个连接通道,下面3个或对象是针对不同浏览器来创建的。var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

4、当RTCPeerConnection对象存在时,我们就可以实例化该对象并创建一个可以发送任意数据的数据通道,此时我们的RTCPeerConnection对象中数据基本都是null。

Vue实战041:获取当前客户端IP地址详解
Vue实战041:获取当前客户端IP地址详解

5、什么是SDP SDP 是一种会话描述格式 ,由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串。SDP中包含了很多媒体信息,包括了媒体类型(video)、传输协议(RTP/UDP/IP)、媒体格式(H.264 video)、多播或单播地址和端口、本端的带宽信息、本端的加密信息等。

Vue实战041:获取当前客户端IP地址详解

6、建立sdp数据 我们从要做的就是从SDP中拿到传输协议中的信息,创建一条sdp数据并将数据存入LocalDescription对象中。这样我们在LocalDescription中就得到了所有的SDP数据,从下图中我们可以看到有IP地址在里面,接下来就可以从sdq中提取ip地址了。

Vue实战041:获取当前客户端IP地址详解
Vue实战041:获取当前客户端IP地址详解

7、监听candidate事件 onicecandidate属性在R哌囿亡噱TCPeerConnection实例上发生icecandidate事件时要调用的函数,当我们向服务器发逭瑗亍作送消息时触发并获取到SDP中的candidate属性,而candidate中正好有我们想要的IP地址,你可以直接获取var ip_addr = evt.candidate.address。当然你也可以从candidate属性中获取,不过这里就会复杂点,用个正则来提取吧(显然方法一简单)。

Vue实战041:获取当前客户端IP地址详解
Vue实战041:获取当前客户端IP地址详解

8、代码封装 最后整理下代码,封装成一个方法需要的时候直接调用即可,通过localStorage来存储获取到的ip_addr(或者Vuex存储),然后我们只需要通过localStorage.getItem('ip_addr'))就可以获取到我们的内网IP地址了。

Vue实战041:获取当前客户端IP地址详解
© 手抄报圈