章节目录:

概要

Asynchronous Socket Listener 支持基于套接字的客户端使用异步读写实现高并发。可以将其配置为从套接字读取定长、前缀可变长度或令牌分隔的消息。客户端连接一直处于开启状态,直到客户端断开连接或监听器出现错误为止。如果未收到匹配的响应,监听器会记录错误并关闭客户端连接。这是为了防止客户端等待监听器不会发送的请求响应。

安装

可以通过 UI 或命令行安装该工具。 

UI 安装

  1. 选择 Parasoft > 首选项,然后点击系统属性分类。
  2. 点击添加 JARs 并选择 com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar 文件。一旦此 jar 文件添加到 Virtualize classpath 中,将加载所有必需的依赖项。
  3. 重启 Virtualize。

命令行安装

com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar 文件添加到设置属性文件中的 system.properties.classpath 属性。例如:

system.properties.classpath=<path to jar>/com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar

classpath 更改完成后,将加载所有必需的依赖项。

使用说明

安装 Asynchronous Socket Listener 后,虚拟资产配置面板的传输协议>自定义选项卡中就会出现 Asynchronous Socket Listener。双击虚拟资产的 Virtualize 服务器节点以打开该面板。

如果有多个自定义监听器可用,则可以从选择实现下拉菜单选择要使用的自定义监听器。

配置

可以配置以下设置。

设置

Port

指定套接字监听器监听传入连接的端口。指定 0 可自动选择一个开放端口。部署资产后,所选端口信息将打印在控制台中。

Worker Threads

指定用于处理信息的工作线程数。

1 为允许的最小值。

默认为 50 

Character Set

指定用于解码和编码字节的字符集。

默认为 UTF-8 

Connection Backlog指定在拒绝新连接之前允许积压的连接数。此配置为可选配置。建议将该字段留空。
Read Mode

指定读取消息的监听模式。

  • 针对大小始终相同的定长消息指定 fixed
  • 针对消息开头有 int(4 字节)长度前缀的消息指定 prefixed
  • 针对有一系列字符串数字的消息指定 prefixed-string
  • 针对以结束字符或 Unicode 序列分隔的消息指定 token

默认为 prefixed 

Fixed Length

Fixed Length [default: 1024] 字段中指定固定消息的大小.

例如,如果消息的大小始终为 4 字节,客户端可能会发送以下请求

[0, 0, 0, 0] 

例如,监听器会发回大小相同的响应,例如:

[1, 1, 1, 1] 

来自客户端的每一条四字节消息都将被视为一条消息。

Token Delimited

Token Delimiter

指定分隔消息的令牌。

默认为 byte 23, End-Of-Transmission-Block 

Token Type

指定从令牌获取字节时使用的转换类型。

  • 指定 string,监听器将使用 getBytes 和配置的字符集来转换为字节
  • 指定 hex,字符串将被解析为十六进制值序列。例如,0a 0d 将转换为字节 10 13 
  • 指定 byte,监听器会将字符串解析为以空格分隔的十进制值的字节序列,如 10 13 

默认为 hex 

令牌分隔示例

如果指定了新行(\n)分隔符,那么当客户端发送多个请求时,监听器将单独处理每条消息,并针对每条消息发回响应。

示例消息
hello world\n
foo bar\n
示例响应
good night world\n
bar foo\n

即使所有消息都是在一次读取中接收的,监听器仍然会处理每个请求并在处理下一条消息之前发回响应。

前缀可变长度(数字) 

本节中的设置仅适用于读取模式设置为 prefixed 的情况。 

Length of the Length Field

确定长度字段的长度。将读取所需的字节数并转换成数字,以确定消息的长度。可以指定以下值:12348 

默认读取 4 个字节并将其转换为整数。

Include Length Field Size in Length 

表示读取的长度是否也应包括长度字段的大小。

例如,如果启用该选项,4 字节的消息将发送长度值为 8。这是因为长度字段的默认长度为 4 字节,并会添加到消息体长度中。 

默认为 true

Format of Static Prefix/Suffix 

指定用于将静态前缀/后缀转换为字节的转换类型。

  • 指定 string,监听器将使用 getBytes 和配置的字符集来转换为字节
  • 指定 hex,字符串将被解析为十六进制值序列。例如,0a 0d 将转换为字节 10 13 
  • 指定 byte,监听器会将字符串解析为以空格分隔的十进制值的字节序列,如 10 13 

默认为 hex 

Static Prefix

指定可能需要添加到消息中的前缀段。指定后,消息格式将为 <PREFIX_BYTES><LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES>。

Static Suffix

指定套接字可能需要的消息后缀段。指定后,消息格式将为 <LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES><SUFFIX_BYTES>。

前缀可变长度(数字)配置示例

如果客户端发送的请求包含 request1,而 request1 的前缀使用 CP037 字符集的 int,且长度包含前缀长度,那么请求将由以下字节表示:

[0, 0, 0, 12, 114, 101, 113, 117, 101, 115, 116, 49]

前四个字节([0, 0, 0, 12])是整数 12,即整个消息的长度,包括前缀的前 4 个字节。其余字节是由配置的字符集编码的字符串 request1

前缀可变长度(字符串)

本节中的设置仅适用于读取模式设置为 prefixed-string 的情况。 

String Prefix Length

指定消息长度前缀的大小。要读取的字节数根据转换成字节的数字位数计算。监听器将 0 编码为字节,并乘以该字段提供的数字。

默认为 4 

Include Prefix in Length

设置为 true 表示从前缀读取的长度也应包括前缀的长度。

默认为 true 

前缀可变长度(字符串)配置示例

如果客户端发送的请求前缀是一个包含 6 个字符的字符串,该字符串包含消息的总长度(以字节为单位),那么使用 CP037 字符集将产生以下字符串消息:

000014request1 

字符串中的 000014 部分是长度前缀,14 是包括前缀在内的字符集编码的整个消息的总长度(以字节为单位)。如果长度中不包含前缀,那么客户端的请求将为以下字符串:

000008request1 

字符串中的 000008 部分是由字符集编码的 request1 的长度。

SSL

SSL Enabled [ default:false ] 设置为 true,以便通过 SSL 进行监听。 

日志

指定 Log Level 字段。此设置为可选设置。

  • 输入 1 仅记录错误
  • 输入 2 记录错误和警告。
  • 输入 3 记录错误、警告和信息。
  • 输入 4 记录错误、警告、信息和排错。

默认为 3 


  • No labels