Mercurial > libervia-web
comparison libervia/server/websockets.py @ 1513:ff95501abe74
server (websocket): don't crash when a force-close is failing
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 22 May 2023 11:57:49 +0200 |
parents | 106bae41f5c8 |
children |
comparison
equal
deleted
inserted
replaced
1512:65e063657597 | 1513:ff95501abe74 |
---|---|
102 ) | 102 ) |
103 | 103 |
104 session.touch() | 104 session.touch() |
105 session_data = session.getComponent(session_iface.IWebSession) | 105 session_data = session.getComponent(session_iface.IWebSession) |
106 if session_data.ws_socket is not None: | 106 if session_data.ws_socket is not None: |
107 log.warning("Session socket is already set, force closing it") | 107 log.warning(f"Session socket is already set {session_data.ws_socket=} {self=}], force closing it") |
108 session_data.ws_socket.send( | 108 try: |
109 "force_close", {"reason": "duplicate connection detected"} | 109 session_data.ws_socket.send( |
110 ) | 110 "force_close", {"reason": "duplicate connection detected"} |
111 ) | |
112 except Exception as e: | |
113 log.warning(f"Can't force close old connection: {e}") | |
111 session_data.ws_socket = self | 114 session_data.ws_socket = self |
112 self.__session = session_data | 115 self.__session = session_data |
113 self.__profile = session_data.profile or C.SERVICE_PROFILE | 116 self.__profile = session_data.profile or C.SERVICE_PROFILE |
114 log.debug(f"websocket connection connected for profile {self.__profile}") | 117 log.debug(f"websocket connection connected for profile {self.__profile}") |
115 return "libervia-page" | 118 return "libervia-page" |