-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
- 使用 AddServer 方法添加多个服务器时, 如果使用
AddServer<TReceivePackage, TPipelineFilter>这样的重载, 将只有第一个服务可以监听, 之后的服务都未监听; 如果改为AddServer<TSuperSocketService, TReceivePackage, TPipelineFilter>, 则一切正常; - 在 AddServer 里为每个服务都调用了
UseInProcSessionContainer(), 但是获取ISessionContainer仍然为空;
示例代码:
var hostBuilder = MultipleServerHostBuilder.Create()
.ConfigureAppConfiguration((hostCtx, configApp) =>
{
configApp.AddJsonFile("appsettings.json", true);
})
.AddServer<TextPackageInfo, LinePipelineFilter>(builder =>
{
builder
.ConfigureServerOptions((ctx, config) => config.GetSection("TestServer1"))
.UsePackageHandler(async (s, p) =>
{
Console.WriteLine($"TestServer1: {p.Text}");
})
.UseInProcSessionContainer();
})
.AddServer<TextPackageInfo, LinePipelineFilter>(builder =>
{
builder
.ConfigureServerOptions((ctx, config) => config.GetSection("TestServer2"))
.UsePackageHandler(async (s, p) =>
{
Console.WriteLine($"TestServer2: {p.Text}");
})
.UseInProcSessionContainer();
})
.ConfigureLogging((hostCtx, loggingBuilder) =>
{
loggingBuilder.AddConsole();
loggingBuilder.AddDebug();
});
var host = hostBuilder.Build();
await host.StartAsync();
var session = host.Services.GetService<ISessionContainer>();
Console.ReadLine();appsettings.json 配置:
{
"serverOptions": {
"TestServer1": {
"name": "TestServer1",
"listeners": [
{
"ip": "Any",
"port": 4040
}
]
},
"TestServer2": {
"name": "TestServer2",
"listeners": [
{
"ip": "Any",
"port": 4041
}
]
}
}
}kerryjiang
Metadata
Metadata
Assignees
Labels
No labels