123456789101112131415161718192021222324252627282930313233343536 |
- import socket
- from rich.console import Console
- import logging
- logger = logging.getLogger(__name__)
- console = Console()
- class SocketSender:
- """
- Handles sending generated audio packets to the clients.
- """
- def __init__(self, stop_event, queue_in, host="0.0.0.0", port=12346):
- self.stop_event = stop_event
- self.queue_in = queue_in
- self.host = host
- self.port = port
- def run(self):
- self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.socket.bind((self.host, self.port))
- self.socket.listen(1)
- logger.info("Sender waiting to be connected...")
- self.conn, _ = self.socket.accept()
- logger.info("sender connected")
- while not self.stop_event.is_set():
- audio_chunk = self.queue_in.get()
- self.conn.sendall(audio_chunk)
- if isinstance(audio_chunk, bytes) and audio_chunk == b"END":
- break
- self.conn.close()
- logger.info("Sender closed")
|