This commit is contained in:
n0rdye 2024-12-15 17:09:10 +00:00
parent e6ce63d19c
commit 75ec09e005
2 changed files with 69 additions and 30 deletions

View File

@ -7,21 +7,38 @@ from websockets.sync.server import serve
import websockets
import array
import time
from flask import render_template
api = Flask(__name__)
watchers_last_seen = {}
web_users = {}
stream = False
freeze = False
debug = False
def current_time():
return str(int(time.time()))
@api.route("/", methods=["GET"])
def web():
return render_template('index.html')
@api.route("/off", methods=["GET"])
def streaOff():
global stream
stream=False
return "True"
@api.route("/freeze", methods=["GET"])
def freeze_the_stream():
global freeze
if freeze == True:
freeze=False
return "un-frosen"
else:
freeze=True
return "frosen"
@api.route("/on", methods=["GET"])
def streamOn():
global stream
@ -29,15 +46,14 @@ def streamOn():
return "True"
@api.route("/views", methods=["GET"])
def views():
def return_views():
global watchers_last_seen
return str(len(watchers_last_seen))
return str(len(watchers_last_seen.keys()))
@api.route("/mode", methods=["GET"])
def mode():
global watchers_last_seen
return str(stream)
return "streaming-"+str(stream)+"\n frozen-"+str(freeze)
def ws_server(websocket):
global stream, watchers_last_seen
@ -52,11 +68,16 @@ def ws_server(websocket):
if debug: print(req,"-----",args)
match (req):
case ("get_stream"):
if freeze == True:
websocket.send(f"freeze")
else:
if stream:
watchers_last_seen[args["uuid"]] = current_time()
websocket.send(f""+str(json.dumps([True, screenlive.gen()])))
else:
websocket.send(f"null")
case ("web-site-user"):
users[args["uuid"]] = current_time()
case (_):
websocket.send(f"null")
except websockets.exceptions.ConnectionClosedOK:
@ -76,8 +97,14 @@ def timeout_task():
if debug: print(key+"is timed out")
watchers_last_seen.pop(key)
break
for key,value in users.items():
if debug: print(key+"||||"+value)
if (int(current_time())-int(value)) > 5:
if debug: print(key+"is timed out")
users.pop(key)
break
if debug: print("time -",current_time())
if debug: print("watchers -",watchers_last_seen.keys())
if debug: print("watchers -",watchers_last_seen.keys(),"::::: users - ",users.keys())
sleep(10)
def run_flask_server():

View File

@ -99,7 +99,7 @@
con()
function con(){
ws = new WebSocket('wss://ws.n0r.su/');
ws = new WebSocket('wss://n0r.su/screen_share/ws');
ws.onopen = () => {
console.log('websocket success---');
get()
@ -109,7 +109,7 @@
setTimeout(()=>{con()},5000)
};
ws.onerror = (e) => {
setTimeout(()=>{con()},5000)
// setTimeout(()=>{con()},5000)
no_stream();
// console.error('websocket fail');
}
@ -120,6 +120,11 @@
// get();
// }, 100);
ws.onmessage = (message) => {
if (message.data == "freeze"){
no_stream(true);
setTimeout(()=>{get();},2000)
}
else{
if (message.data != "null"){
was_connect = true;
let data = message.data;
@ -135,8 +140,9 @@
}
}
}
}
ws.onerror = (e) => {
setTimeout(()=>{con()},5000)
// setTimeout(()=>{con()},5000)
no_stream();
// console.error('websocket fail');
}
@ -146,7 +152,8 @@
// console.log("The connection has been closed successfully.")
};
function no_stream(){
function no_stream(freeze = false){
if (!freeze){
if (document.body.style.backgroundImage != `url(/papi/savehouse/?const=club_dance)`){
document.body.style.backgroundImage = `url(/papi/savehouse/?const=club_dance)`;
}
@ -158,6 +165,11 @@
status("Stream is closed")
}
}
else{
document.getElementById("top_bar").removeAttribute("hidden");
status("stream is frozen")
}
}
} else {
console.error('dont support websocket');
};