add websocket
This commit is contained in:
parent
74111257ca
commit
aaf988df53
@ -1,4 +1,5 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
|
import dataclasses
|
||||||
import logging
|
import logging
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
@ -74,6 +75,7 @@ class Web(Node):
|
|||||||
def __init__(self, level=logging.INFO):
|
def __init__(self, level=logging.INFO):
|
||||||
super(Web, self).__init__(level=level)
|
super(Web, self).__init__(level=level)
|
||||||
self.wss: list[WebSocket] = []
|
self.wss: list[WebSocket] = []
|
||||||
|
self.arg = ImageArgMsg(sender='frontend', t_end=123)
|
||||||
|
|
||||||
def custom_setup(self):
|
def custom_setup(self):
|
||||||
self.router = APIRouter()
|
self.router = APIRouter()
|
||||||
@ -86,11 +88,13 @@ class Web(Node):
|
|||||||
async def websocket_endpoint(self, websocket: WebSocket):
|
async def websocket_endpoint(self, websocket: WebSocket):
|
||||||
await websocket.accept()
|
await websocket.accept()
|
||||||
self.wss.append(websocket)
|
self.wss.append(websocket)
|
||||||
t = ImageArgMsg('z', t_end=1000)
|
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
data = await websocket.receive_json()
|
data = await websocket.receive_json()
|
||||||
t.t_end = data['v']
|
if data['type'] == 'ImageArgMsg':
|
||||||
|
t = dataclasses.replace(self.arg)
|
||||||
|
t.sender = data['sender']
|
||||||
|
t.t_start = data['t_start']
|
||||||
self.send(t)
|
self.send(t)
|
||||||
except WebSocketDisconnect:
|
except WebSocketDisconnect:
|
||||||
self.wss.remove(websocket)
|
self.wss.remove(websocket)
|
||||||
@ -109,9 +113,9 @@ class Web(Node):
|
|||||||
while True:
|
while True:
|
||||||
msg = self.recv()
|
msg = self.recv()
|
||||||
if isinstance(msg, ImageArgMsg):
|
if isinstance(msg, ImageArgMsg):
|
||||||
if msg.sender != 'z':
|
if msg.sender != 'frontend':
|
||||||
self.boardcast(msg.__dict__)
|
self.arg = msg
|
||||||
logger.info(msg)
|
self.boardcast(msg.dict)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@ -95,6 +95,12 @@ class Msg:
|
|||||||
def encode_msg(self):
|
def encode_msg(self):
|
||||||
return self.magic() + self.eid() + self.encode()
|
return self.magic() + self.eid() + self.encode()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dict(self):
|
||||||
|
d = self.__dict__.copy()
|
||||||
|
d['type'] = self.__class__.__name__
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
class HeaderByteMsg(Msg):
|
class HeaderByteMsg(Msg):
|
||||||
header: dict
|
header: dict
|
||||||
|
|||||||
@ -223,7 +223,9 @@ class RfMat:
|
|||||||
return self.copy(self.m.get())
|
return self.copy(self.m.get())
|
||||||
|
|
||||||
def crop(self, t_start: int, t_end: int):
|
def crop(self, t_start: int, t_end: int):
|
||||||
return self.copy(self.m[:, t_start:t_end])
|
ts = sorted([0, t_start, self.duration])[1]
|
||||||
|
te = sorted([ts, t_end, self.duration])[1]
|
||||||
|
return self.copy(self.m[:, ts:te])
|
||||||
|
|
||||||
def crop_center(self, center: float, width: float):
|
def crop_center(self, center: float, width: float):
|
||||||
mmin = max(0, int(center - width / 2))
|
mmin = max(0, int(center - width / 2))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user