mirror of https://github.com/XTLS/Xray-core
60 lines
1.4 KiB
HTML
60 lines
1.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Browser Dialer</title>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
// Copyright (c) 2021 XRAY. Mozilla Public License 2.0.
|
|
var url = "ws://" + window.location.host + "/websocket?token=csrfToken"
|
|
var count = 0
|
|
setInterval(check, 1000)
|
|
function check() {
|
|
if (count <= 0) {
|
|
count += 1
|
|
console.log("Prepare", url)
|
|
var ws = new WebSocket(url)
|
|
// arraybuffer is significantly faster in chrome than default
|
|
// blob, tested with chrome 123
|
|
ws.binaryType = "arraybuffer";
|
|
var wss = undefined
|
|
var first = true
|
|
ws.onmessage = function (event) {
|
|
if (first) {
|
|
first = false
|
|
count -= 1
|
|
var arr = event.data.split(" ")
|
|
console.log("Dial", arr[0], arr[1])
|
|
wss = new WebSocket(arr[0], arr[1])
|
|
wss.binaryType = "arraybuffer";
|
|
var opened = false
|
|
wss.onopen = function (event) {
|
|
opened = true
|
|
ws.send("ok")
|
|
}
|
|
wss.onmessage = function (event) {
|
|
ws.send(event.data)
|
|
}
|
|
wss.onclose = function (event) {
|
|
ws.close()
|
|
}
|
|
wss.onerror = function (event) {
|
|
!opened && ws.send("fail")
|
|
wss.close()
|
|
}
|
|
check()
|
|
} else wss.send(event.data)
|
|
}
|
|
ws.onclose = function (event) {
|
|
if (first) count -= 1
|
|
else wss.close()
|
|
}
|
|
ws.onerror = function (event) {
|
|
ws.close()
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|