diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2023-02-02 19:00:06 +0100 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2024-02-18 11:32:53 +0100 |
commit | b91385fe3d3538704deb06bb187dc48efa87e34b (patch) | |
tree | 7dffc2122af275005c0f0905b90b34cc3f4e5cd2 /slack | |
parent | 9760ab1181394b9069c7e3795b8726718e401dce (diff) | |
download | wee-slack-b91385fe3d3538704deb06bb187dc48efa87e34b.tar.gz |
Reconnect when loosing connection
Diffstat (limited to 'slack')
-rw-r--r-- | slack/slack_conversation.py | 3 | ||||
-rw-r--r-- | slack/slack_workspace.py | 18 |
2 files changed, 13 insertions, 8 deletions
diff --git a/slack/slack_conversation.py b/slack/slack_conversation.py index 913883c..f71457d 100644 --- a/slack/slack_conversation.py +++ b/slack/slack_conversation.py @@ -122,6 +122,9 @@ class SlackConversation: await self.open_buffer() async def open_buffer(self): + if self.buffer_pointer: + return + name = await self.name() full_name = f"{shared.SCRIPT_NAME}.{self.workspace.name}.{self.name_prefix('full_name')}{name}" short_name = self.name_prefix("short_name") + name diff --git a/slack/slack_workspace.py b/slack/slack_workspace.py index c43e2c8..5973c9a 100644 --- a/slack/slack_workspace.py +++ b/slack/slack_workspace.py @@ -243,10 +243,9 @@ class SlackWorkspace: except ssl.SSLWantReadError: # No more data to read at this time. return weechat.WEECHAT_RC_OK - except (WebSocketConnectionClosedException, socket.error) as e: - # TODO: Handle error - # handle_socket_error(e, team, "receive") - print(e) + except (WebSocketConnectionClosedException, socket.error): + print("lost connection on receive, reconnecting") + run_async(self.reconnect()) return weechat.WEECHAT_RC_OK if opcode == ABNF.OPCODE_PONG: @@ -269,10 +268,13 @@ class SlackWorkspace: try: self._ws.ping() # workspace.last_ping_time = time.time() - except (WebSocketConnectionClosedException, socket.error) as e: - # TODO: Handle error - # handle_socket_error(e, team, "ping") - print(e) + except (WebSocketConnectionClosedException, socket.error): + print("lost connection on ping, reconnecting") + run_async(self.reconnect()) + + async def reconnect(self): + self.disconnect() + await self.connect() def disconnect(self): self.is_connected = False |