|
11 | 11 | from typing import Dict, List, Optional
|
12 | 12 |
|
13 | 13 | from aiohttp import web
|
| 14 | +from servicelib.observer import observe |
14 | 15 | from socketio.exceptions import \
|
15 | 16 | ConnectionRefusedError as socket_io_connection_error
|
16 | 17 |
|
17 |
| -from servicelib.observer import observe |
18 |
| - |
19 | 18 | from ..login.decorators import RQT_USERID_KEY, login_required
|
20 | 19 | from ..resource_manager.websocket_manager import managed_resource
|
21 | 20 | from .config import get_socket_server
|
@@ -106,8 +105,12 @@ async def disconnect(sid: str, app: web.Application) -> None:
|
106 | 105 | log.debug("client in room %s disconnecting", sid)
|
107 | 106 | sio = get_socket_server(app)
|
108 | 107 | async with sio.session(sid) as socketio_session:
|
109 |
| - user_id = socketio_session["user_id"] |
110 |
| - client_session_id = socketio_session["client_session_id"] |
111 |
| - with managed_resource(user_id, client_session_id, app) as rt: |
112 |
| - log.debug("client %s disconnected from room %s", user_id, sid) |
113 |
| - await rt.remove_socket_id() |
| 108 | + if "user_id" in socketio_session: |
| 109 | + user_id = socketio_session["user_id"] |
| 110 | + client_session_id = socketio_session["client_session_id"] |
| 111 | + with managed_resource(user_id, client_session_id, app) as rt: |
| 112 | + log.debug("client %s disconnected from room %s", user_id, sid) |
| 113 | + await rt.remove_socket_id() |
| 114 | + else: |
| 115 | + # this should not happen!! |
| 116 | + log.error("Unknown client diconnected sid: %s, session %s", sid, str(socketio_session)) |
0 commit comments