| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <!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>
|