5、SuperSocket 基本配置

SuperSocket

SuperSocket 基本配置

中文(中国) Toggle Dropdown

 

v1.6 Toggle Dropdown

关键字: 配置文档, 配置示例, 根配置, 服务器实例配置, Windows服务配置

一个配置示例

1<?xml version="1.0"?> 2<configuration> 3 <configSections> 4 <section name="superSocket" 5 type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" /> 6 </configSections> 7 <appSettings> 8 <add key="ServiceName" value="SupperSocketService" /> 9 </appSettings> 10 <superSocket> 11 <servers> 12 <server name="TelnetServerA" 13 serverTypeName="TelnetServer" 14 ip="Any" 15 port="2020"> 16 </server> 17 <server name="TelnetServerB" 18 serverTypeName="TelnetServer" 19 ip="Any" 20 port="2021"> 21 </server> 22 </servers> 23 <serverTypes> 24 <add name="TelnetServer" 25 type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> 26 </serverTypes> 27 </superSocket> 28 <startup> 29 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 30 </startup> 31</configuration>

根配置

配置节点 "superSocket" SuperSocket 配置的根节点,它定义了 SuperSocket 所需要的全局参数。 让我们先看下根节点的所有配置属性:

  • maxWorkingThreads: 线程池最大工作线程数量;
  • minWorkingThreads: 线程池最小工作线程数量;
  • maxCompletionPortThreads: 线程池最大完成端口线程数量;
  • minCompletionPortThreads: 线程池最小完成端口线程数量;
  • disablePerformanceDataCollector: 是否禁用性能数据采集;
  • performanceDataCollectInterval: 性能数据采集频率 (单位为秒, 默认值: 60);
  • isolation: SuperSocket 服务器实例隔离级别
    • None - 无隔离
    • AppDomain - 应用程序域级别的隔离,多个服务器实例运行在各自独立的应用程序域之中
    • Process - 进程级别的隔离,多个服务器实例运行在各自独立的进程之中
  • logFactory: 默认logFactory的名字, 所有可用的 log factories定义在子节点 "logFactories" 之中, 我们将会在下面的文档中介绍它;
  • defaultCulture: 整个程序的默认 thread culture,只在.Net 4.5中可用;

服务器实例配置

在根节点中,有一个名为 "servers" 的子节点,你可以定义一个或者多个server节点来代表服务器实例。 这些服务器实例可以是同一种 AppServer 类型, 也可以是不同的类型。

Server 节点的所有属性如下:

  • name: 服务器实例的名称;

  • serverType: 服务器实例的类型的完整名称;

  • serverTypeName: 所选用的服务器类型在 serverTypes 节点的名字,配置节点 serverTypes 用于定义所有可用的服务器类型,我们将在后面再做详细介绍;

  • ip: 服务器监听的ip地址。你可以设置具体的地址,也可以设置为下面的值 Any - 所有的IPv4地址 IPv6Any - 所有的IPv6地址

  • port: 服务器监听的端口;

  • listenBacklog: 监听队列的大小;

  • mode: Socket服务器运行的模式, Tcp (默认) 或者 Udp;

  • disabled: 服务器实例是否禁用了;

  • startupOrder: 服务器实例启动顺序, bootstrap 将按照此值的顺序来启动多个服务器实例;

  • sendTimeOut: 发送数据超时时间;

  • sendingQueueSize: 发送队列最大长度, 默认值为5;

  • maxConnectionNumber: 可允许连接的最大连接数;

  • receiveBufferSize: 接收缓冲区大小;

  • sendBufferSize: 发送缓冲区大小;

  • syncSend: 是否启用同步发送模式, 默认值: false;

  • logCommand: 是否记录命令执行的记录;

  • logBasicSessionActivity: 是否记录session的基本活动,如连接和断开;

  • logAllSocketException: 是否记录所有Socket异常和错误;

  • clearIdleSession: true 或 false, 是否定时清空空闲会话,默认值是 false;

  • clearIdleSessionInterval: 清空空闲会话的时间间隔, 默认值是120, 单位为秒;

  • idleSessionTimeOut: 会话空闲超时时间; 当此会话空闲时间超过此值,同时clearIdleSession被配置成true时,此会话将会被关闭; 默认值为300,单位为秒;

  • security: Empty, Tls, Ssl3. Socket服务器所采用的传输层加密协议,默认值为空; 你也可以设置多个值,如 "Tls11,Tls12";

  • maxRequestLength: 最大允许的请求长度,默认值为1024;

  • textEncoding: 文本的默认编码,默认值是 ASCII;

  • defaultCulture: 此服务器实例的默认 thread culture, 只在.Net 4.5中可用而且在隔离级别为 'None' 时无效;

  • disableSessionSnapshot: 是否禁用会话快照, 默认值为 false.

  • sessionSnapshotInterval: 会话快照时间间隔, 默认值是 5, 单位为秒;

  • keepAliveTime: 网络连接正常情况下的keep alive数据的发送间隔, 默认值为 600, 单位为秒;

  • keepAliveInterval: Keep alive失败之后, keep alive探测包的发送间隔,默认值为 60, 单位为秒;

  • certificate: 这各节点用于定义用于此服务器实例的X509Certificate证书的信息

    它有两种用法:

    • 从文件加载证书

        <certificate filePath="localhost.pfx" password="supersocket" />
      
    • 从本地证书库加载证书

        <certificate storeName="My" storeLocation="LocalMachine" thumbprint="‎f42585bceed2cb049ef4a3c6d0ad572a6699f6f3"/>
      
  • connectionFilter: 定义该实例所使用的连接过滤器的名字,多个过滤器用 ',' 或者 ';' 分割开来。 可用的连接过滤器定义在根节点的一个子节点内,将会在下面的文档中做更多介绍;

  • commandLoader: 定义该实例所使用的命令加载器的名字,多个过滤器用 ',' 或者 ';' 分割开来。 可用的命令加载器定义在根节点的一个子节点内,将会在下面的文档中做更多介绍;

  • logFactory: 定义该实例所使用的日志工厂(LogFactory)的名字。 可用的日志工厂(LogFactory)定义在根节点的一个子节点内,将会在下面的文档中做更多介绍; 如果你不设置该属性,定义在根节点的日志工厂(LogFactory)将会被使用,如果根节点也未定义日志工厂(LogFactory),该实例将会使用内置的 log4net 日志工厂(LogFactory);

  • listeners: 此配置节点用于支持一个服务器实例监听多个IP/端口组合。 此配置节点应该包含一个或者多个拥有一下属性的listener节点:

    1ip: the listening ip; 2port: the listening port; 3backlog: the listening back log size; 4security: the security mode (None/Default/Tls/Ssl/...);

    例如:

    1<server name="EchoServer" serverTypeName="EchoService"> 2 <listeners> 3 <add ip="Any" port="2012" /> 4 <add ip="IPv6Any" port="2012" /> 5 </listeners> 6</server>
  • receiveFilterFactory: 定义该实例所使用的接收过滤器工厂的名字;

服务器类型配置

服务器类型节点是一个在根节点下面的配置集合。你可以添加一个或者多个拥有属性'name'和'type'的配置元素:

1 <serverTypes> 2 <add name="TelnetServerType" 3 type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> 4 </serverTypes>

由于上面定一个服务器类型的名称为 "TelnetServerType",你可以将服务器实例节点的属性"serverTypeName"设置为 "TelnetServerType", 用于运行该类型的服务器:

1 <server name="TelnetServerA" 2 serverTypeName="TelnetServerType" 3 ip="Any" 4 port="2020"> 5 </server>

Log Factories 配置

和服务器类型配置节点相同, 一也可以定义一个或者多个L日志工厂(LogFatory) 然后再服务器实例中使用。 唯一的区别是它可以设置在根配置节点上:

1<logFactories> 2 <add name="ConsoleLogFactory" 3 type="SuperSocket.SocketBase.Logging.ConsoleLogFactory, SuperSocket.SocketBase" /> 4</logFactories>

在根节点设置LogFactory:

1<superSocket logFactory="ConsoleLogFactory"> 2 ... 3 ... 4</superSocket>

在服务器节点设置LogFactory:

1<server name="TelnetServerA" 2 logFactory="ConsoleLogFactory" 3 ip="Any" 4 port="2020"> 5</server>

配置智能感知提示

SuperSocket 提供了在线的 XSD (XML Schema Document) 来帮助你方便的进行配置。 你只需在你的SuperSocket 配置节中增加三行代码即可:

1 <superSocket xmlns="http://schema.supersocket.net/supersocket" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://schema.supersocket.net/supersocket http://schema.supersocket.net/v1-6/supersocket.xsd"> 4 <!----> 5 </superSocket>

然后你就可以在你更新 SuperSocket 配置的时候获得智能感知的自动提示功能:

SuperSocket Configuration Intellisense

SuperSocket Windows 服务的配置

你可能知道, SuperSocket提供了一个可以Windows服务形式运行的容器 "SuperSocket.SocketService.exe".

你可以通过配置来定义此Windows服务的名字:

1<appSettings> 2 <add key="ServiceName" value="SuperSocketService" /> 3</appSettings>

它还支持其它针对Windows服务的配置属性:

1ServiceDescription: 此Windows服务的描述 2ServicesDependedOn: 此服务依赖的其他服务; 此服务价格会在其依赖的服务启动之后再启动; 多个依赖服务用 ',' 或者 ';' 分割

© 2018 - GetDocs.Net - Hosted by BuyVM

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )