Fixed issues with TTS voice changes. Added proper handling for slave clients. Fixed several stores. Fixed database saving to safely save foreign keys.

This commit is contained in:
Tom
2025-03-06 16:11:36 +00:00
parent 3e717522c2
commit fd0bca5c7c
13 changed files with 139 additions and 96 deletions

View File

@ -6,9 +6,10 @@ namespace HermesSocketServer.Socket
{
public class HermesSocketManager
{
private IList<WebSocketUser> _sockets;
private System.Timers.Timer _timer;
private ILogger _logger;
private readonly IList<WebSocketUser> _sockets;
private readonly System.Timers.Timer _timer;
private readonly ILogger _logger;
private readonly object _lock = new object();
public HermesSocketManager(ILogger logger)
@ -18,31 +19,40 @@ namespace HermesSocketServer.Socket
_timer.Elapsed += async (sender, e) => await HandleHeartbeats(e);
_timer.Enabled = true;
_logger = logger;
_lock = new object();
}
public void Add(WebSocketUser socket)
{
_sockets.Add(socket);
lock (_lock)
{
_sockets.Add(socket);
}
}
public IList<WebSocketUser> GetAllSockets()
{
return _sockets.AsReadOnly();
lock (_lock)
{
return _sockets.AsReadOnly();
}
}
public IEnumerable<WebSocketUser> GetSockets(string userId)
{
foreach (var socket in _sockets)
lock (_lock)
{
if (socket.Id == userId)
yield return socket;
return _sockets.Where(s => s.Id == userId);
}
}
public bool Remove(WebSocketUser socket)
{
return _sockets.Remove(socket);
lock (_lock)
{
return _sockets.Remove(socket);
}
}
private async Task HandleHeartbeats(ElapsedEventArgs e)