GFNetworkMessageValidator¶
API Reference / Network / 类索引
- 路径:
addons/gf/extensions/network/messages/gf_network_message_validator.gd - 模块:
Network - 继承:
RefCounted - API:
public - 类别:协议与扩展点 (
protocol) - 首次版本:
3.17.0
通用网络消息校验器。 校验消息类型、包体大小和可选必需载荷字段,避免后端收到明显无效数据。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 常量 | DEFAULT_MAX_PACKET_SIZE |
const DEFAULT_MAX_PACKET_SIZE: int = 64 * 1024 |
| 属性 | allow_empty_message_type |
var allow_empty_message_type: bool = false |
| 属性 | min_packet_size |
var min_packet_size: int = 1 |
| 属性 | max_packet_size |
var max_packet_size: int = DEFAULT_MAX_PACKET_SIZE |
| 属性 | required_payload_keys |
var required_payload_keys: PackedStringArray = PackedStringArray() |
| 属性 | allowed_message_types |
var allowed_message_types: PackedStringArray = PackedStringArray() |
| 属性 | blocked_message_types |
var blocked_message_types: PackedStringArray = PackedStringArray() |
| 属性 | contract |
var contract: GFNetworkContract = null |
| 属性 | require_contract_message |
var require_contract_message: bool = false |
| 属性 | known_channel_ids |
var known_channel_ids: PackedStringArray = PackedStringArray() |
| 属性 | enforce_sender_id_matches_peer |
var enforce_sender_id_matches_peer: bool = false |
| 属性 | require_sender_id |
var require_sender_id: bool = false |
| 属性 | min_sequence |
var min_sequence: int = -1 |
| 属性 | max_sequence |
var max_sequence: int = -1 |
| 属性 | min_tick |
var min_tick: int = -1 |
| 属性 | max_tick |
var max_tick: int = -1 |
| 方法 | validate_message |
func validate_message(message: GFNetworkMessage) -> Dictionary: |
| 方法 | validate_message_for_peer |
func validate_message_for_peer(message: GFNetworkMessage, peer_id: int) -> Dictionary: |
| 方法 | allow_message_type |
func allow_message_type(message_type: StringName) -> bool: |
| 方法 | register_known_channel |
func register_known_channel(channel_id: StringName) -> bool: |
| 方法 | configure_from_contract |
func configure_from_contract(network_contract: GFNetworkContract, options: Dictionary = {}) -> void: |
| 方法 | validate_bytes |
func validate_bytes(bytes: PackedByteArray, channel: GFNetworkChannel = null) -> Dictionary: |
| 方法 | get_debug_snapshot |
func get_debug_snapshot() -> Dictionary: |
常量¶
DEFAULT_MAX_PACKET_SIZE¶
- API:
public
默认全局最大包体大小,单位 bytes。
属性¶
allow_empty_message_type¶
- API:
public
是否允许空 message_type。
min_packet_size¶
- API:
public
最小包体大小。小于等于 0 表示不限制。
max_packet_size¶
- API:
public
最大包体大小。小于等于 0 表示不限制。
required_payload_keys¶
- API:
public
所有消息都必须包含的 payload key。
allowed_message_types¶
- API:
public - 首次版本:
8.0.0
允许的 message_type 列表。为空时不限制。
blocked_message_types¶
- API:
public - 首次版本:
8.0.0
显式拒绝的 message_type 列表。
contract¶
- API:
public - 首次版本:
8.0.0
可选网络契约。设置后可用字段契约校验消息 payload。
require_contract_message¶
- API:
public - 首次版本:
8.0.0
是否要求 message_type 必须存在于 contract 中。
known_channel_ids¶
- API:
public - 首次版本:
8.0.0
已知逻辑 channel_id 列表。为空时不限制。
enforce_sender_id_matches_peer¶
- API:
public - 首次版本:
8.0.0
通过 validate_message_for_peer() 校验时,是否要求 sender_id 与实际 peer_id 一致。
require_sender_id¶
- API:
public - 首次版本:
8.0.0
是否要求消息显式携带 sender_id。
min_sequence¶
- API:
public - 首次版本:
8.0.0
最小允许 sequence。小于 0 表示不限制。
max_sequence¶
- API:
public - 首次版本:
8.0.0
最大允许 sequence。小于 0 表示不限制。
min_tick¶
- API:
public - 首次版本:
8.0.0
最小允许 tick。小于 0 表示不限制。
max_tick¶
- API:
public - 首次版本:
8.0.0
最大允许 tick。小于 0 表示不限制。
方法¶
validate_message¶
- API:
public
校验消息对象。
参数:
| 名称 | 说明 |
|---|---|
message |
消息。 |
返回:统一校验报告。
结构:
return: Dictionary,包含 ok 和 errors。
validate_message_for_peer¶
- API:
public - 首次版本:
8.0.0
按实际 peer 上下文校验消息对象。
参数:
| 名称 | 说明 |
|---|---|
message |
消息。 |
peer_id |
实际传输 peer 标识。 |
返回:统一校验报告。
结构:
return: Dictionary,包含 ok 和 errors。
allow_message_type¶
- API:
public - 首次版本:
8.0.0
添加允许的 message_type。
参数:
| 名称 | 说明 |
|---|---|
message_type |
消息类型。 |
返回:成功添加或已存在时返回 true。
register_known_channel¶
- API:
public - 首次版本:
8.0.0
添加已知 channel_id。
参数:
| 名称 | 说明 |
|---|---|
channel_id |
通道标识。 |
返回:成功添加或已存在时返回 true。
configure_from_contract¶
- API:
public - 首次版本:
8.0.0
func configure_from_contract(network_contract: GFNetworkContract, options: Dictionary = {}) -> void:
从网络契约同步允许消息和已知通道。
参数:
| 名称 | 说明 |
|---|---|
network_contract |
网络契约。 |
options |
同步选项,支持 include_channels。 |
结构:
options: Dictionary sync options.
validate_bytes¶
- API:
public
校验原始包体。
参数:
| 名称 | 说明 |
|---|---|
bytes |
包体。 |
channel |
可选通道描述。 |
返回:统一校验报告。
结构:
return: Dictionary,包含 ok 和 errors。
get_debug_snapshot¶
- API:
public - 首次版本:
3.17.0
获取调试快照。
返回:校验器状态。
结构:
return: Dictionary,包含 allow_empty_message_type、min_packet_size、max_packet_size、required_payload_keys、allowed_message_types、blocked_message_types、require_contract_message、known_channel_ids、enforce_sender_id_matches_peer、require_sender_id、min_sequence、max_sequence、min_tick 和 max_tick。