mirror of
https://github.com/liamcottle/reticulum-meshchat.git
synced 2026-04-28 00:20:48 +00:00
add hangup listener so we can close websocket
This commit is contained in:
parent
0619dfb3e6
commit
7628ee2ce1
2 changed files with 18 additions and 0 deletions
|
|
@ -15,6 +15,7 @@ class AudioCall:
|
|||
self.link.set_link_closed_callback(self.on_link_closed)
|
||||
self.link.set_packet_callback(self.on_packet)
|
||||
self.audio_packet_listeners = []
|
||||
self.hangup_listeners = []
|
||||
|
||||
def register_audio_packet_listener(self, callback):
|
||||
self.audio_packet_listeners.append(callback)
|
||||
|
|
@ -22,10 +23,17 @@ class AudioCall:
|
|||
def unregister_audio_packet_listener(self, callback):
|
||||
self.audio_packet_listeners.remove(callback)
|
||||
|
||||
def register_hangup_listener(self, callback):
|
||||
self.hangup_listeners.append(callback)
|
||||
|
||||
# handle link being closed
|
||||
def on_link_closed(self, link):
|
||||
print("[AudioCall] on_link_closed")
|
||||
|
||||
# call all hangup listeners
|
||||
for hangup_listener in self.hangup_listeners:
|
||||
hangup_listener()
|
||||
|
||||
# handle packet received over link
|
||||
def on_packet(self, message, packet):
|
||||
|
||||
|
|
|
|||
10
web.py
10
web.py
|
|
@ -316,8 +316,18 @@ class ReticulumWebChat:
|
|||
# ignore errors sending audio packets to websocket
|
||||
pass
|
||||
|
||||
# close websocket when call is hungup
|
||||
def on_hangup():
|
||||
if websocket_response.closed is False:
|
||||
try:
|
||||
asyncio.run(websocket_response.close(code=WSCloseCode.GOING_AWAY))
|
||||
except:
|
||||
# ignore errors closing websocket
|
||||
pass
|
||||
|
||||
# register audio packet listener
|
||||
audio_call.register_audio_packet_listener(on_audio_packet)
|
||||
audio_call.register_hangup_listener(on_hangup)
|
||||
|
||||
# prepare websocket response
|
||||
websocket_response = web.WebSocketResponse()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue