一个完整的配置文件示例
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="superSocket"
type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" />
</configSections>
<appSettings>
<add key="ServiceName" value="SupperSocketService" />
</appSettings>
<superSocket>
<servers>
<server name="TelnetServerA"
serverTypeName="TelnetServer"
ip="Any"
port="2020">
</server>
<server name="TelnetServerB"
serverTypeName="TelnetServer"
ip="Any"
port="2021">
</server>
</servers>
<serverTypes>
<add name="TelnetServer"
type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/>
</serverTypes>
</superSocket>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
根节配置
配置文件中的结点“superSocket”是SuperSocket配置信息的根节点,它定义了SuperSocket所需的全局参数。下面是根节点所有attribute的说明:
- maxWorkingThreads:.NET线程池中最大工作线程数。
- minWorkingThreads:.NET线程池中最小工作线程数。
- maxCompletionPortThreads:.NET线程池中最大完成端口线程数。
- minCompletionPortThreads:.NET线程池中最小完成端口线程数。
- disablePerformanceDataCollector:是否禁用性能数据收集器。
- performanceDataCollectInterval:性能数据采集时间间隔,默认值为60,单位为秒。
- isolation:Supersocket实例的隔离等级,None——不隔离;AppDomain——服务器实例将按应用程序域(AppDomain)隔离。
- logFactory:默认logFactory的名字,所有日志工厂都应在“logFactories”子节点中(logFactories将在接下来的文档中介绍)。
服务器实例配置
在根节点中,有一个名为“servers”的子节点,你可以定义一个或多个代表应用服务器实例的服务器配置结点。服务器实例可以使相同的AppServer类型,也可以是不同的AppServer类型。server结点的attributes如下:
- name:服务器实例名称。
- serverType:将被运行的AppServer的类型全名。
- serverTypeName:选中的服务器类型的名称,所有的服务器类型应在serverTypes节点中定义。(serverType将在接下来的文档中介绍)
- ip:服务器监听的IP。你可以指定某一确定的IP,也可以设置为以下值:Any——所有IPv4地址;IPv6Any——所有IPv6地址。
- port:服务器实例监听的端口。
- listenBacklog:the listen back log size.
- mode:socket服务器运行模式:Tcp(默认);Udp。
- disabled:服务器实例是否被禁用。
- startupOrder:服务器实例的启动顺序,bootstrap将按此顺序启动各个服务器实例。
- sendTimeOut:发送数据的超时时间。
- sendingQueueSize:发送队列的最大大小。
- maxConnectionNumber:服务器所允许的最大同时连接数。
- receiveBufferSize:接收数据缓冲区大小。
- sendBufferSize:发送数据缓冲区大小。
- syncSend:是否以同步方式发送数据,默认为false。
- logCommand:是否记录命令。
- logBasicSessionActivity:是否记录会话的一些基本活动,例如连接和断开。
- clearIdleSession:是否清除空闲的(没有数据交互的)会话,默认为false。
- clearIdelSessionInterval:清除空闲会话的时间间隔,默认值为120秒,单位为秒。
- idleSessionTimeOut:会话超时时间,以秒为单位,默认为300秒。
- security:socket服务器的安全连接选项,可选择Empty、Tls、Ssl3,默认值为Empty。
- maxRequestLength:允许的最大请求长度,默认值为1024。
- disableSessionSnapshot:是否禁用会话快照,默认值为false。
- SessionSnapshotinterval:抓取会话快照的时间间隔,默认值为5,单位为秒。
- keepAliveTime:keep alive消息发送时间间隔。默认值为600, 单位为秒。
- keepAliveInterval:keep alive失败重试的时间间隔。默认值为60, 单位为秒。
- certificate:为X509Certificate准备的配置结点,将被用于服务器实例。
- 它有2种用法:
- 从证书文件加载证书。
<certificate filepath="localhost.pfx" password="supersocket" />
- 从本地证书存储中加载证书。
<certificate storename="My" thumbprint="f42585bceed2cb049ef4a3c6d0ad572a6699f6f3" />
- connectionFilter:用于服务器实例的连接过滤器的名称,如有多个过滤器则应以“,”或“;”隔开(半角)。连接过滤器应该定义在配置根节点的子节点中,我们将在后续的文档中介绍。
- commandLoader:用于服务器实例的命令加载器的名称,如有多个加载器则应以“,”或“;”隔开(半角)。命令加载器应该定义在配置根节点的子节点中,我们将在后续的文档中介绍。
- logFactory:用于服务器实例的日志工厂,如未配置,将使用根配置中的日志工厂。
- listeners:为支持在一个服务器实例中多个IP/端口对监听而设计的配置节点。listeners节点应至少包含一个具有如下属性的子节点:
- ip:所监听的IP
- port:所监听的端口
- backlog:监听日志大小
- security:安全模式(None/Default/Tls/Ssl/...)
- 例:
<server name="EchoServer" serverTypeName="EchoService"> <listeners> <add ip="Any" port="2012" /> <add ip="IPv6Any" port="2012" /> </listeners> </server> - requestFilterFactory:用于服务器实例的请求过滤器工厂的名称。
服务器类型配置
服务器配置结点是根节点下的一个配置集。你可以添加一个或多个名为“add”且具有“name”和“type”的元素:
<serverTypes>
<add name="TelnetServerType"
type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/>
</serverTypes>
由于定义的服务器类型名称是“TelnetServerType”,你可以设置serverTypeName属性为你所要运行的服务器实例,其类型应该为TelnetServerType
<server name="TelnetServerA"
serverTypeName="TelnetServerType"
ip="Any"
port="2020">
</server>
日志工厂的配置
与服务器类型的配置相同,你也可以定义一个或多个在服务器中使用的日志工厂,唯一的不同时日志工厂也可以在根配置结点汇总定义:
<logFactories>
<add name="ConsoleLogFactory"
type="SuperSocket.SocketBase.Logging.ConsoleLogFactory, SuperSocket.SocketBase" />
</logFactories>
在根节点中使用:
<superSocket logFactory="ConsoleLogFactory">
...
...
</superSocket>
在服务器结点中使用:
<server name="TelnetServerA"
logFactory="ConsoleLogFactory"
ip="Any"
port="2020">
</server>
没有评论:
发表评论