SuperSocket是一个轻量级的可扩展套接字应用程序框架。您可以使用它轻松构建始终连接的套接字应用程序,而无需考虑如何使用套接字,如何维护套接字连接以及套接字如何工作。它是一个纯粹的c#项目,被设计为可扩展的,所以它很容易集成到你现有的系统,只要它们是用.net开发的。
nuget包 <PackageReference Include="SuperSocket.Server" Version="2.0.0-beta.18" />
下面进行supersocket使用的几部分进行解析和使用
- 创建一个socket工具类 SuperSocketCenter
- 在工具类中创建host
private readonly ISuperSocketHostBuilder<TextPackageInfo> host = SuperSocketHostBuilder.Create<TextPackageInfo, BuiltInPipelineFilter>();
其中create方法为创建一个宿主,TextPackageInfo为super的数据包类,当然也有其它也能自定义数据包类,BuiltInPipelineFilter是解析器,当然,这个解析器是自定义的,稍后会进行介绍
3.初始化配置
在创建的工具类中创建一个运行方法 RunSoket
示例代码:
List<ListenOptions> listens = new List<ListenOptions>();
listens.Add(new ListenOptions//配置获取
{
Ip = "any",
Port = 4040
});
host.UseSessionHandler(OnConnectedAsync, OnClosedAsync)
.UsePackageHandler(OnPackageAsync)
.ConfigureSuperSocket(options =>
{
options.Name = "PeaceTalk Server";
options.Listeners = listens;
options.DefaultTextEncoding = Encoding.UTF8;
});
host.RunConsoleAsync();
配置介绍:UseSessionHandler 接收两个委托函数,设置会话连接和断开两个事件
UsePackageHandler 定义数据接收事件,
ConfigureSuperSocket 设置基础配置
宿主名 监听端口 解析的字符串编码等等
RunConsoleAsync 启动宿主方法
当然你如果是asp.Net web程序
可以在Program进行集成初始化supersocket
代码示例:
private static List<ListenOptions> listens = new List<ListenOptions>();
private static readonly ISuperSocketCenter superSocketCenter = new SuperSocketCenter();
public static void Main(string[] args)
{
listens.Add(new ListenOptions//配置获取
{
Ip = "any",
Port = 4040
});
var builder = CreateHostBuilder(args);
builder.Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AsSuperSocketHostBuilder<TextPackageInfo, BuiltInPipelineFilter>()
.UseSessionHandler().UseSessionHandler(superSocketCenter.OnConnectedAsync, superSocketCenter.OnClosedAsync)
.UsePackageHandler(superSocketCenter.OnPackageAsync)
.ConfigureSuperSocket(options =>
{
options.Name = "PeaceTalk Server";
options.Listeners = listens;
options.DefaultTextEncoding = Encoding.UTF8;
});
web跑起来的效果