Allow closed websocket connections to be garbage collected
This commit is contained in:
parent
1076bb2c9c
commit
d58a29f4f9
@ -133,9 +133,13 @@ class BrowserModBrowser:
|
|||||||
def connection(self):
|
def connection(self):
|
||||||
return self._connections
|
return self._connections
|
||||||
|
|
||||||
@connection.setter
|
def open_connection(self, connection, cid):
|
||||||
def connection(self, con):
|
self._connections.append((connection, cid))
|
||||||
self._connections.append(con)
|
|
||||||
|
def close_connection(self, connection):
|
||||||
|
self._connections = list(
|
||||||
|
filter(lambda v: v[0] != connection, self._connections)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def getBrowser(hass, browserID, *, create=True):
|
def getBrowser(hass, browserID, *, create=True):
|
||||||
|
@ -38,13 +38,21 @@ async def async_setup_connection(hass):
|
|||||||
def listener(data):
|
def listener(data):
|
||||||
connection.send_message(event_message(msg["id"], {"result": data}))
|
connection.send_message(event_message(msg["id"], {"result": data}))
|
||||||
|
|
||||||
connection.subscriptions[msg["id"]] = store.add_listener(listener)
|
store_listener = store.add_listener(listener)
|
||||||
|
|
||||||
|
def unsubscriber():
|
||||||
|
store_listener()
|
||||||
|
dev = getBrowser(hass, browserID, create=False)
|
||||||
|
if dev:
|
||||||
|
dev.close_connection(connection)
|
||||||
|
|
||||||
|
connection.subscriptions[msg["id"]] = unsubscriber
|
||||||
connection.send_result(msg["id"])
|
connection.send_result(msg["id"])
|
||||||
|
|
||||||
if store.get_browser(browserID).enabled:
|
if store.get_browser(browserID).enabled:
|
||||||
dev = getBrowser(hass, browserID)
|
dev = getBrowser(hass, browserID)
|
||||||
dev.update_settings(hass, store.get_browser(browserID).asdict())
|
dev.update_settings(hass, store.get_browser(browserID).asdict())
|
||||||
dev.connection = (connection, msg["id"])
|
dev.open_connection(connection, msg["id"])
|
||||||
await store.set_browser(
|
await store.set_browser(
|
||||||
browserID, last_seen=datetime.now(tz=timezone.utc).isoformat()
|
browserID, last_seen=datetime.now(tz=timezone.utc).isoformat()
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user