namespace XFEExtension.NetCore.CyberComm.XCCNetWork; /// /// XCC网络通讯 /// public class XCCNetWork { private readonly XCCNetWorkBase _xCCNetWorkBase; /// /// XCC当前群组 /// public List Groups { get; set; } /// 显式配置的 XCC WSS 端点。 public Uri? ServerUri { get; set; } /// /// 明文消息接收时触发 /// public event EventHandler TextMessageReceived { add { _xCCNetWorkBase.TextMessageReceived += value; } remove { _xCCNetWorkBase.TextMessageReceived -= value; } } /// /// 二进制消息接收时触发 /// public event EventHandler BinaryMessageReceived { add { _xCCNetWorkBase.BinaryMessageReceived += value; } remove { _xCCNetWorkBase.BinaryMessageReceived -= value; } } /// /// 异常消息接收时触发 /// public event EventHandler ExceptionMessageReceived { add { _xCCNetWorkBase.ExceptionMessageReceived += value; } remove { _xCCNetWorkBase.ExceptionMessageReceived -= value; } } /// /// 连接关闭时触发 /// public event EventHandler ConnectionClosed { add { _xCCNetWorkBase.ConnectionClosed += value; } remove { _xCCNetWorkBase.ConnectionClosed -= value; } } /// /// 连接成功时触发 /// public event EventHandler Connected { add { _xCCNetWorkBase.Connected += value; } remove { _xCCNetWorkBase.Connected -= value; } } /// /// 创建XCC群组会话 /// /// 群组名称 /// 发送者 /// public XCCGroup CreateGroup(string groupId, string sender) { var serverUri = ServerUri ?? throw new InvalidOperationException("必须先配置 XCC ServerUri,且生产环境应使用 wss"); var group = new XCCGroupImpl(Guid.NewGuid().ToString(), groupId, sender, serverUri, _xCCNetWorkBase); Groups.Add(group); return group; } /// /// XCC网络通信会话 /// public XCCNetWork() { _xCCNetWorkBase = new XCCNetWorkBase(); Groups = []; } /// 使用显式端点创建 XCC 会话。 public XCCNetWork(Uri serverUri) : this() { if (serverUri.Scheme is not ("ws" or "wss")) throw new ArgumentException("XCC 端点必须使用 ws 或 wss", nameof(serverUri)); ServerUri = serverUri; } }