ShengShengBuXi/ShengShengBuXi.ConsoleApp/Services/ISignalRService.cs
2025-03-27 23:30:20 +08:00

76 lines
2.1 KiB
C#

using ShengShengBuXi.ConsoleApp.Models;
namespace ShengShengBuXi.ConsoleApp.Services;
/// <summary>
/// SignalR客户端服务接口
/// </summary>
public interface ISignalRService
{
/// <summary>
/// 连接状态改变事件
/// </summary>
event EventHandler<bool> ConnectionStateChanged;
/// <summary>
/// 配置更新事件
/// </summary>
event EventHandler<PhoneBoothConfig> ConfigUpdated;
/// <summary>
/// 音频文件更新事件
/// </summary>
event EventHandler<(string FileName, byte[] FileData)> AudioFileUpdated;
/// <summary>
/// 启动连接
/// </summary>
/// <param name="hubUrl">SignalR Hub URL</param>
/// <returns>异步任务</returns>
Task StartConnectionAsync(string hubUrl);
/// <summary>
/// 停止连接
/// </summary>
/// <returns>异步任务</returns>
Task StopConnectionAsync();
/// <summary>
/// 获取当前是否已连接
/// </summary>
bool IsConnected { get; }
/// <summary>
/// 获取最新配置
/// </summary>
/// <returns>异步任务,返回配置信息</returns>
Task<PhoneBoothConfig> GetConfigAsync();
/// <summary>
/// 上传录音文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>异步任务,返回是否上传成功</returns>
Task<bool> UploadRecordingAsync(string filePath);
/// <summary>
/// 开始音频流
/// </summary>
/// <param name="sampleRate">采样率</param>
/// <param name="channels">通道数</param>
/// <returns>异步任务</returns>
Task StartAudioStreamAsync(int sampleRate, int channels);
/// <summary>
/// 结束音频流
/// </summary>
/// <returns>异步任务</returns>
Task EndAudioStreamAsync();
/// <summary>
/// 实时上传音频数据
/// </summary>
/// <param name="audioData">音频数据字节数组</param>
/// <returns>异步任务,返回是否上传成功</returns>
Task<bool> UploadAudioDataRealtimeAsync(byte[] audioData);
}