github.com/xtls/xray-core@v1.8.12-0.20240518155711-3168d27b0bdb/transport/internet/websocket/dialer.html (about)

     1  <!DOCTYPE html>
     2  <html>
     3  <head>
     4  	<title>Browser Dialer</title>
     5  </head>
     6  <body>
     7  	<script>
     8  		// Copyright (c) 2021 XRAY. Mozilla Public License 2.0.
     9  		var url = "ws://" + window.location.host + "/websocket?token=csrfToken"
    10  		var count = 0
    11  		setInterval(check, 1000)
    12  		function check() {
    13  			if (count <= 0) {
    14  				count += 1
    15  				console.log("Prepare", url)
    16  				var ws = new WebSocket(url)
    17  				var wss = undefined
    18  				var first = true
    19  				ws.onmessage = function (event) {
    20  					if (first) {
    21  						first = false
    22  						count -= 1
    23  						var arr = event.data.split(" ")
    24  						console.log("Dial", arr[0], arr[1])
    25  						wss = new WebSocket(arr[0], arr[1])
    26  						var opened = false
    27  						wss.onopen = function (event) {
    28  							opened = true
    29  							ws.send("ok")
    30  						}
    31  						wss.onmessage = function (event) {
    32  							ws.send(event.data)
    33  						}
    34  						wss.onclose = function (event) {
    35  							ws.close()
    36  						}
    37  						wss.onerror = function (event) {
    38  							!opened && ws.send("fail")
    39  							wss.close()
    40  						}
    41  						check()
    42  					} else wss.send(event.data)
    43  				}
    44  				ws.onclose = function (event) {
    45  					if (first) count -= 1
    46  					else wss.close()
    47  				}
    48  				ws.onerror = function (event) {
    49  					ws.close()
    50  				}
    51  			}
    52  		}
    53  	</script>
    54  </body>
    55  </html>