mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-07-30 13:48:07 +02:00
Cleanup websocket
This commit is contained in:
parent
0250db70d0
commit
2edf3e30f5
@ -4,7 +4,7 @@ import errno
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import threading
|
import threading
|
||||||
from typing import Callable
|
from typing import Any, Callable
|
||||||
from wsgiref.simple_server import make_server
|
from wsgiref.simple_server import make_server
|
||||||
|
|
||||||
from ws4py.server.wsgirefserver import (
|
from ws4py.server.wsgirefserver import (
|
||||||
@ -21,8 +21,8 @@ from frigate.config import FrigateConfig
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class WebSocket(WebSocket_):
|
class WebSocket(WebSocket_): # type: ignore[misc]
|
||||||
def unhandled_error(self, error):
|
def unhandled_error(self, error: Any) -> None:
|
||||||
"""
|
"""
|
||||||
Handles the unfriendly socket closures on the server side
|
Handles the unfriendly socket closures on the server side
|
||||||
without showing a confusing error message
|
without showing a confusing error message
|
||||||
@ -33,12 +33,12 @@ class WebSocket(WebSocket_):
|
|||||||
logging.getLogger("ws4py").exception("Failed to receive data")
|
logging.getLogger("ws4py").exception("Failed to receive data")
|
||||||
|
|
||||||
|
|
||||||
class WebSocketClient(Communicator): # type: ignore[misc]
|
class WebSocketClient(Communicator):
|
||||||
"""Frigate wrapper for ws client."""
|
"""Frigate wrapper for ws client."""
|
||||||
|
|
||||||
def __init__(self, config: FrigateConfig) -> None:
|
def __init__(self, config: FrigateConfig) -> None:
|
||||||
self.config = config
|
self.config = config
|
||||||
self.websocket_server = None
|
self.websocket_server: WSGIServer | None = None
|
||||||
|
|
||||||
def subscribe(self, receiver: Callable) -> None:
|
def subscribe(self, receiver: Callable) -> None:
|
||||||
self._dispatcher = receiver
|
self._dispatcher = receiver
|
||||||
@ -47,10 +47,10 @@ class WebSocketClient(Communicator): # type: ignore[misc]
|
|||||||
def start(self) -> None:
|
def start(self) -> None:
|
||||||
"""Start the websocket client."""
|
"""Start the websocket client."""
|
||||||
|
|
||||||
class _WebSocketHandler(WebSocket): # type: ignore[misc]
|
class _WebSocketHandler(WebSocket):
|
||||||
receiver = self._dispatcher
|
receiver = self._dispatcher
|
||||||
|
|
||||||
def received_message(self, message: WebSocket.received_message) -> None:
|
def received_message(self, message: WebSocket.received_message) -> None: # type: ignore[name-defined]
|
||||||
try:
|
try:
|
||||||
json_message = json.loads(message.data.decode("utf-8"))
|
json_message = json.loads(message.data.decode("utf-8"))
|
||||||
json_message = {
|
json_message = {
|
||||||
@ -86,7 +86,7 @@ class WebSocketClient(Communicator): # type: ignore[misc]
|
|||||||
)
|
)
|
||||||
self.websocket_thread.start()
|
self.websocket_thread.start()
|
||||||
|
|
||||||
def publish(self, topic: str, payload: str, _: bool) -> None:
|
def publish(self, topic: str, payload: Any, _: bool = False) -> None:
|
||||||
try:
|
try:
|
||||||
ws_message = json.dumps(
|
ws_message = json.dumps(
|
||||||
{
|
{
|
||||||
@ -109,9 +109,11 @@ class WebSocketClient(Communicator): # type: ignore[misc]
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def stop(self) -> None:
|
def stop(self) -> None:
|
||||||
self.websocket_server.manager.close_all()
|
if self.websocket_server is not None:
|
||||||
self.websocket_server.manager.stop()
|
self.websocket_server.manager.close_all()
|
||||||
self.websocket_server.manager.join()
|
self.websocket_server.manager.stop()
|
||||||
self.websocket_server.shutdown()
|
self.websocket_server.manager.join()
|
||||||
|
self.websocket_server.shutdown()
|
||||||
|
|
||||||
self.websocket_thread.join()
|
self.websocket_thread.join()
|
||||||
logger.info("Exiting websocket client...")
|
logger.info("Exiting websocket client...")
|
||||||
|
Loading…
Reference in New Issue
Block a user