You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
import websocket, sys
|
|
from threading import Thread
|
|
from json import dumps
|
|
from time import sleep
|
|
import os
|
|
|
|
START_AFTER_CONNECT = None
|
|
SERVICE_NAME = None
|
|
|
|
def create_pulser(ws: websocket.WebSocketApp):
|
|
def run(ws):
|
|
builddate = int(os.getenv("BUILDDATE", "0"))
|
|
while 1:
|
|
ws.send_text(dumps({"name":SERVICE_NAME, "builddate":builddate}))
|
|
sleep(15)
|
|
thread = Thread(target=run, args=[ws], daemon=True)
|
|
thread.start()
|
|
|
|
def start():
|
|
print("substart")
|
|
|
|
|
|
class WS:
|
|
ws: websocket.WebSocketApp
|
|
def __init__(self, backend, auth):
|
|
if (START_AFTER_CONNECT is None or SERVICE_NAME is None):
|
|
print("Setup START_AFTER_CONNECT and SERVICE_NAME")
|
|
sys.exit(1)
|
|
else:
|
|
print(f"Run after setup {SERVICE_NAME}: {START_AFTER_CONNECT}")
|
|
|
|
addr = backend
|
|
if not "wss://" in addr:
|
|
addr = addr.replace("https://", "wss://")
|
|
if not "/ws/services" in addr:
|
|
addr += "/ws/services"
|
|
|
|
print(f"Connect to {addr}, secret len: {len(auth)}")
|
|
self.ws = websocket.WebSocketApp(addr, cookie="secretkey="+auth, on_close=self.on_close, on_open=self.on_open)
|
|
|
|
@staticmethod
|
|
def on_close(ws_self, status_code, msg):
|
|
print(f"WS Close, code:{status_code}, msg: {msg}")
|
|
sys.exit(0)
|
|
|
|
@staticmethod
|
|
def on_open(ws_self):
|
|
print("Connected")
|
|
create_pulser(ws_self)
|
|
if START_AFTER_CONNECT:
|
|
START_AFTER_CONNECT()
|
|
|
|
def run(self):
|
|
if self.ws.run_forever():
|
|
print("fuck")
|
|
|
|
if __name__ == "__main__":
|
|
START_AFTER_CONNECT = start
|
|
SERVICE_NAME = "test"
|
|
wsc = WS("wss://tf2.pblr-nyk.pro/ws/services", "")
|
|
wsc.run()
|