SuperSocket如何构建的Socket服务?
摘要:SuperSocket 是一款基于 .NET 技术栈的高性能、跨平台、可扩展的 Socket 服务器框架,专为 TCPUDP 服务端应用开发设计,具备稳定可靠、易于扩展的优势; 一、NuGet 包管理器中下载相关包 安装 SuperSoc
SuperSocket 是一款基于 .NET 技术栈的高性能、跨平台、可扩展的 Socket 服务器框架,专为 TCP/UDP 服务端应用开发设计,具备稳定可靠、易于扩展的优势;
一、NuGet 包管理器中下载相关包
安装 SuperSocket.WebSocket.Server 包
二、启动SocketServer服务
注册启动WebSocket Server 服务方法
/// <summary>
/// WebSocket服务器实例
/// </summary>
private IHost? _webSocketServer;
/// <summary>
/// 存储所有连接的WebSocket会话
/// </summary>
private readonly ConcurrentDictionary<string, WebSocketSession> _connectedSessions = new();
/// <summary>
/// 启动 WebSocket 服务
/// </summary>
/// <param name="port">监听端口</param>
/// <param name="ip">监听IP地址</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>异步任务</returns>
public async Task WebSocketServerAsync(int port, IPAddress ip, CancellationToken cancellationToken = default)
{
try
{
_webSocketServer = WebSocketHostBuilder.Create()
.UseSession<ConnectionSession>()
.UseWebSocketMessageHandler(
// TODO: 监听会话消息事件
async (session, message) => await HandleWebSocketMessageAsync(session, message.Message)
)
.ConfigureServices(services =>
{
// TODO: 监听会话连接事件
services.AddSingleton<Action<WebSocketSession>>(session =>
{
Console.WriteLine($"WebSocket会话已连接: {session.SessionID}");
_connectedSessions.TryAdd(session.SessionID, session);
});
// TODO: 监听会话断开事件
services.AddSingleton<Action<WebSocketSession, CloseEventArgs>>((session, args) =>
{
Console.WriteLine($"WebSocket会话已断开: {session.SessionID}");
_connectedSessions.TryRemove(session.SessionID, out _);
});
})
.ConfigureAppConfiguration((hostContext, configApp) =>
{
var config = new Dictionary
