XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
using System.Net.WebSockets;
namespace XFEExtension.NetCore.CyberComm;
/// <summary>
/// CyberComm客户端群组
/// </summary>
public class CyberCommGroup
{
private readonly List<CyberCommServerEventArgs> _cyberCommList = [];
/// <summary>
/// 组ID
/// </summary>
public string GroupId { get; set; }
/// <summary>
/// 添加客户端
/// </summary>
/// <param name="e">客户端</param>
public void Add(CyberCommServerEventArgs e)
{
_cyberCommList.Add(e);
}
/// <summary>
/// 移除指定的客户端
/// </summary>
/// <param name="webSocket">客户端</param>
public void Remove(WebSocket webSocket)
{
var cyberCommServerEventArgs = _cyberCommList.Find(x => x.CurrentWebSocket == webSocket);
if (cyberCommServerEventArgs is not null)
_cyberCommList.Remove(cyberCommServerEventArgs);
}
/// <summary>
/// 移除指定索引的客户端
/// </summary>
/// <param name="index">客户单索引</param>
public void RemoveAt(int index)
{
_cyberCommList.RemoveAt(index);
}
/// <summary>
/// 清空列表
/// </summary>
public void Clear()
{
_cyberCommList.Clear();
}
/// <summary>
/// 群组客户端数量
/// </summary>
public int Count
{
get
{
return _cyberCommList.Count;
}
}
/// <summary>
/// 索引器
/// </summary>
/// <param name="findFunc">查找</param>
/// <returns>客户端</returns>
public CyberCommServerEventArgs? this[Predicate<CyberCommServerEventArgs> findFunc]
{
get
{
return _cyberCommList.Find(findFunc);
}
}
/// <summary>
/// 发送群组文本消息
/// </summary>
/// <param name="message">群发文本消息</param>
public async Task SendGroupTextMessage(string message)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
tasks.Add(cyberCommServerEventArgs.ReplyMessage(message));
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 向指定的WS客户端发送群组文本消息
/// </summary>
/// <param name="message">群发文本消息</param>
/// <param name="findFunc">指定的WS客户端</param>
public async Task SendGroupTextMessage(string message, Func<CyberCommServerEventArgs, bool> findFunc)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
if (findFunc.Invoke(cyberCommServerEventArgs))
{
tasks.Add(cyberCommServerEventArgs.ReplyMessage(message));
}
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 发送群组二进制消息
/// </summary>
/// <param name="bytes">群发二进制消息</param>
public async Task SendGroupBinaryMessage(byte[] bytes)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
tasks.Add(cyberCommServerEventArgs.ReplyBinaryMessage(bytes));
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 向指定的WS客户端发送群组二进制消息
/// </summary>
/// <param name="bytes">群发二进制消息</param>
/// <param name="findFunc">指定的WS客户端</param>
public async Task SendGroupBinaryMessage(byte[] bytes, Func<CyberCommServerEventArgs, bool> findFunc)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
if (findFunc.Invoke(cyberCommServerEventArgs))
{
tasks.Add(cyberCommServerEventArgs.ReplyBinaryMessage(bytes));
}
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 客户端群组
/// </summary>
/// <param name="groupId">群组ID</param>
public CyberCommGroup(string groupId)
{
this.GroupId = groupId;
}
/// <summary>
/// 客户端群组
/// </summary>
/// <param name="groupId">群组ID</param>
/// <param name="cyberCommList">客户端群组</param>
public CyberCommGroup(string groupId, List<CyberCommServerEventArgs> cyberCommList)
{
this.GroupId = groupId;
this._cyberCommList = cyberCommList;
}
}
using System.Net.WebSockets;
namespace XFEExtension.NetCore.CyberComm;
/// <summary>
/// CyberComm客户端群组
/// </summary>
public class CyberCommGroup
{
private readonly List<CyberCommServerEventArgs> _cyberCommList = [];
/// <summary>
/// 组ID
/// </summary>
public string GroupId { get; set; }
/// <summary>
/// 添加客户端
/// </summary>
/// <param name="e">客户端</param>
public void Add(CyberCommServerEventArgs e)
{
_cyberCommList.Add(e);
}
/// <summary>
/// 移除指定的客户端
/// </summary>
/// <param name="webSocket">客户端</param>
public void Remove(WebSocket webSocket)
{
var cyberCommServerEventArgs = _cyberCommList.Find(x => x.CurrentWebSocket == webSocket);
if (cyberCommServerEventArgs is not null)
_cyberCommList.Remove(cyberCommServerEventArgs);
}
/// <summary>
/// 移除指定索引的客户端
/// </summary>
/// <param name="index">客户单索引</param>
public void RemoveAt(int index)
{
_cyberCommList.RemoveAt(index);
}
/// <summary>
/// 清空列表
/// </summary>
public void Clear()
{
_cyberCommList.Clear();
}
/// <summary>
/// 群组客户端数量
/// </summary>
public int Count
{
get
{
return _cyberCommList.Count;
}
}
/// <summary>
/// 索引器
/// </summary>
/// <param name="findFunc">查找</param>
/// <returns>客户端</returns>
public CyberCommServerEventArgs? this[Predicate<CyberCommServerEventArgs> findFunc]
{
get
{
return _cyberCommList.Find(findFunc);
}
}
/// <summary>
/// 发送群组文本消息
/// </summary>
/// <param name="message">群发文本消息</param>
public async Task SendGroupTextMessage(string message)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
tasks.Add(cyberCommServerEventArgs.ReplyMessage(message));
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 向指定的WS客户端发送群组文本消息
/// </summary>
/// <param name="message">群发文本消息</param>
/// <param name="findFunc">指定的WS客户端</param>
public async Task SendGroupTextMessage(string message, Func<CyberCommServerEventArgs, bool> findFunc)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
if (findFunc.Invoke(cyberCommServerEventArgs))
{
tasks.Add(cyberCommServerEventArgs.ReplyMessage(message));
}
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 发送群组二进制消息
/// </summary>
/// <param name="bytes">群发二进制消息</param>
public async Task SendGroupBinaryMessage(byte[] bytes)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
tasks.Add(cyberCommServerEventArgs.ReplyBinaryMessage(bytes));
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 向指定的WS客户端发送群组二进制消息
/// </summary>
/// <param name="bytes">群发二进制消息</param>
/// <param name="findFunc">指定的WS客户端</param>
public async Task SendGroupBinaryMessage(byte[] bytes, Func<CyberCommServerEventArgs, bool> findFunc)
{
List<Task> tasks = [];
foreach (var cyberCommServerEventArgs in _cyberCommList)
{
if (findFunc.Invoke(cyberCommServerEventArgs))
{
tasks.Add(cyberCommServerEventArgs.ReplyBinaryMessage(bytes));
}
}
await Task.WhenAll(tasks);
}
/// <summary>
/// 客户端群组
/// </summary>
/// <param name="groupId">群组ID</param>
public CyberCommGroup(string groupId)
{
this.GroupId = groupId;
}
/// <summary>
/// 客户端群组
/// </summary>
/// <param name="groupId">群组ID</param>
/// <param name="cyberCommList">客户端群组</param>
public CyberCommGroup(string groupId, List<CyberCommServerEventArgs> cyberCommList)
{
this.GroupId = groupId;
this._cyberCommList = cyberCommList;
}
}