feat: build server connection backbone

This commit is contained in:
2021-07-02 20:51:10 -04:00
parent 593f092c84
commit 4be068dae1
3 changed files with 46 additions and 9 deletions

39
tetris/online.py Normal file
View File

@@ -0,0 +1,39 @@
import asyncio
import websockets
from threading import Thread
class OnlineService():
_URI = "ws://localhost:5001" # TODO remove hardcoded URI and add to config file
_TIMEOUT = 5 / 1000 # Timeout in seconds
_websocket = None
_thread = None
@classmethod
def init(cls):
thread = Thread(target=asyncio.get_event_loop().run_until_complete, args=(cls._connect_to_server(),))
cls._thread_pool.append(thread)
thread.start()
@classmethod
def update(cls):
cls._thread_pool = list(filter(lambda t: t.is_alive(), cls._thread_pool))
@classmethod
async def _connect_to_server(cls):
print("Connecting to server...")
cls._websocket = await websockets.connect(cls._URI)
print("Connected to server...")
@classmethod
def ping_server(cls):
thread = Thread(target=asyncio.get_event_loop().run_until_complete, args=(cls._ping_server(),))
cls._thread_pool.append(thread)
thread.start()
@classmethod
async def _ping_server(cls):
if cls._websocket is not None:
await cls._websocket.send("ping")
# IDEAS
# Create running ONE thread that handles requests and reponses to the server in one running loop