add hangup listener so we can close websocket
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user