Files
core/services/inbox/sse.py

20 lines
685 B
Python
Raw Normal View History

2022-12-06 11:44:29 +03:00
from sse_starlette.sse import EventSourceResponse
2022-12-13 03:56:58 +03:00
from starlette.requests import Request
from graphql.type import GraphQLResolveInfo
2022-12-12 11:03:48 +03:00
from resolvers.inbox.messages import message_generator
2022-12-06 14:58:52 +03:00
from base.exceptions import Unauthorized
2022-12-06 11:44:29 +03:00
2022-12-13 03:44:35 +03:00
# https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md
2022-12-06 11:44:29 +03:00
2022-12-13 03:07:47 +03:00
async def sse_messages(request: Request):
2022-12-13 03:44:35 +03:00
print(f'[SSE] request\n{request}\n')
info = GraphQLResolveInfo()
info.context['request'] = request.scope
user_id = request.scope['user'].user_id
if user_id:
event_generator = await message_generator(None, info)
2022-12-12 11:03:48 +03:00
return EventSourceResponse(event_generator)
2022-12-06 14:58:52 +03:00
else:
raise Unauthorized("Please login")