forked from platypush/platypush
34 lines
800 B
Python
34 lines
800 B
Python
from typing_extensions import override
|
|
|
|
from platypush.message.event import Event
|
|
|
|
from . import WSRoute, logger, pubsub_redis_topic
|
|
|
|
events_redis_topic = pubsub_redis_topic('events')
|
|
|
|
|
|
class WSEventProxy(WSRoute):
|
|
"""
|
|
Websocket event proxy mapped to ``/ws/events``.
|
|
"""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.subscribe(events_redis_topic)
|
|
|
|
@classmethod
|
|
@override
|
|
def app_name(cls) -> str:
|
|
return 'events'
|
|
|
|
@override
|
|
def run(self) -> None:
|
|
for msg in self.listen():
|
|
try:
|
|
evt = Event.build(msg.decode())
|
|
except Exception as e:
|
|
logger.warning('Error parsing event: %s: %s', msg, e)
|
|
continue
|
|
|
|
self.send(str(evt))
|