Added libs
This commit is contained in:
51
api/eventsSocketio.py
Normal file
51
api/eventsSocketio.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from datetime import datetime
|
||||
import time
|
||||
|
||||
from flask import Blueprint, make_response, request, jsonify, session, has_request_context
|
||||
from flask_socketio import SocketIO, Namespace, emit, send, join_room, leave_room
|
||||
|
||||
from libs.noSys.noSysModule import NoSysModule
|
||||
|
||||
class EventsSocketio():
|
||||
def __init__(self, module:NoSysModule):
|
||||
self.module = module
|
||||
self.namespace = f"/ws/{self.module.name}"
|
||||
self.socketio:SocketIO = None
|
||||
|
||||
def register_events(self, socketio:SocketIO):
|
||||
self.socketio = socketio
|
||||
self.default_events()
|
||||
self.events()
|
||||
|
||||
def default_events(self):
|
||||
@self.socketio.on("health", namespace=self.namespace)
|
||||
def on_health(*args, **kwargs):
|
||||
self.emit("health", {"status": "ok"})
|
||||
|
||||
@self.socketio.on("ping", namespace=self.namespace)
|
||||
def on_ping(data=None):
|
||||
self.emit("pong", {"ts": time.time(), "echo": data})
|
||||
|
||||
|
||||
def emit(self, event:str, data=None, room=None, **kwargs):
|
||||
target = None
|
||||
if room:
|
||||
target = room
|
||||
elif has_request_context():
|
||||
target = request.sid
|
||||
|
||||
self.socketio.emit(event, data, to=target, namespace=self.namespace, **kwargs)
|
||||
|
||||
def on(self, event: str):
|
||||
def decorator(handler):
|
||||
@self.socketio.on(event, namespace=self.namespace)
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return handler(*args, **kwargs)
|
||||
except Exception as e:
|
||||
self.error(str(e))
|
||||
return wrapper
|
||||
return decorator
|
||||
|
||||
def events(self):
|
||||
pass
|
||||
Reference in New Issue
Block a user