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;
}
}