|
@@ -1,3 +1,8 @@
|
|
|
+<!--
|
|
|
+ * @Description:
|
|
|
+ * @Autor: linqian
|
|
|
+ * @Date: 2021-04-06 08:44:43
|
|
|
+-->
|
|
|
<!DOCTYPE html>
|
|
|
<html lang="zh-cmn-Hans">
|
|
|
<head>
|
|
@@ -17,53 +22,4 @@
|
|
|
<body>
|
|
|
<div id="app"></div>
|
|
|
</body>
|
|
|
-</html>
|
|
|
-<script>
|
|
|
- // NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
|
|
|
-var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
|
|
|
-
|
|
|
-if (RTCPeerConnection) (function () {
|
|
|
- var rtc = new RTCPeerConnection({iceServers:[]});
|
|
|
- if (1 || window.mozRTCPeerConnection) { // FF [and now Chrome!] needs a channel/stream to proceed
|
|
|
- rtc.createDataChannel('', {reliable:false});
|
|
|
- };
|
|
|
-
|
|
|
- rtc.onicecandidate = function (evt) {
|
|
|
- // convert the candidate to SDP so we can run it through our general parser
|
|
|
- // see https://twitter.com/lancestout/status/525796175425720320 for details
|
|
|
- if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
|
|
|
- };
|
|
|
- rtc.createOffer(function (offerDesc) {
|
|
|
- grepSDP(offerDesc.sdp);
|
|
|
- rtc.setLocalDescription(offerDesc);
|
|
|
- }, function (e) { console.warn("offer failed", e); });
|
|
|
-
|
|
|
-
|
|
|
- var addrs = Object.create(null);
|
|
|
- addrs["0.0.0.0"] = false;
|
|
|
- function updateDisplay(newAddr) {
|
|
|
- if (newAddr in addrs) return;
|
|
|
- else addrs[newAddr] = true;
|
|
|
- var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
|
|
|
- const localIp = displayAddrs.join(" or perhaps ") || "n/a";
|
|
|
- window.sessionStorage.setItem("localIp",localIp);
|
|
|
- console.log(localIp);
|
|
|
- }
|
|
|
-
|
|
|
- function grepSDP(sdp) {
|
|
|
- var hosts = [];
|
|
|
- sdp.split('\r\n').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39
|
|
|
- if (~line.indexOf("a=candidate")) { // http://tools.ietf.org/html/rfc4566#section-5.13
|
|
|
- var parts = line.split(' '), // http://tools.ietf.org/html/rfc5245#section-15.1
|
|
|
- addr = parts[4],
|
|
|
- type = parts[7];
|
|
|
- if (type === 'host') updateDisplay(addr);
|
|
|
- } else if (~line.indexOf("c=")) { // http://tools.ietf.org/html/rfc4566#section-5.7
|
|
|
- var parts = line.split(' '),
|
|
|
- addr = parts[2];
|
|
|
- updateDisplay(addr);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-})();
|
|
|
-</script>
|
|
|
+</html>
|