跳转至

model

feishu.ws.model

ClientConfig dataclass

握手时由服务端下发的长连接客户端参数。

握手响应的 data.ClientConfig 使用 PascalCase 键,本类将其映射为蛇形命名字段, 缺失字段保留默认值。ping_interval 还会在每次收到心跳回复(pong)携带新的 ClientConfig 时被刷新。

参数:

名称 类型 描述 默认

reconnect_count

int

允许的重连次数;-1 表示无限重连。

-1

reconnect_interval

float

两次重连之间的等待秒数。

120.0

reconnect_nonce

float

重连随机抖动窗口(秒),用于打散并发重连。

30.0

ping_interval

float

发送心跳(ping)控制帧的间隔秒数。

120.0
飞书文档

长连接模式

示例:

Python Console Session
1
2
3
4
>>> ClientConfig().reconnect_count
-1
>>> ClientConfig(ping_interval=60.0).ping_interval
60.0
源代码位于: feishu/ws/model.py
Python
@dataclass
class ClientConfig:
    r"""
    握手时由服务端下发的长连接客户端参数。

    握手响应的 `data.ClientConfig` 使用 PascalCase 键,本类将其映射为蛇形命名字段,
    缺失字段保留默认值。`ping_interval` 还会在每次收到心跳回复(pong)携带新的
    `ClientConfig` 时被刷新。

    Args:
        reconnect_count: 允许的重连次数;`-1` 表示无限重连。
        reconnect_interval: 两次重连之间的等待秒数。
        reconnect_nonce: 重连随机抖动窗口(秒),用于打散并发重连。
        ping_interval: 发送心跳(ping)控制帧的间隔秒数。

    飞书文档:
        [长连接模式](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/events/long-connection-mode)

    Examples:
        >>> ClientConfig().reconnect_count
        -1
        >>> ClientConfig(ping_interval=60.0).ping_interval
        60.0
    """

    reconnect_count: int = -1
    reconnect_interval: float = 120.0
    reconnect_nonce: float = 30.0
    ping_interval: float = 120.0

client_config_from_dict

Python
client_config_from_dict(d: dict[str, Any]) -> ClientConfig

将握手响应中的 ClientConfig(PascalCase 键)映射为 ClientConfig

仅当对应键存在且值不为 None 时才覆盖默认值,因此服务端可只下发部分字段。

参数:

名称 类型 描述 默认

d

dict[str, Any]

握手响应 data.ClientConfig 字典,可能为空。

必需

返回:

类型 描述
ClientConfig

映射后的客户端配置。

示例:

Python Console Session
1
2
3
4
5
6
7
>>> cfg = client_config_from_dict({"ReconnectCount": 5, "PingInterval": 60})
>>> cfg.reconnect_count, cfg.ping_interval
(5, 60.0)
>>> client_config_from_dict({}).reconnect_count
-1
>>> client_config_from_dict({"ReconnectInterval": None}).reconnect_interval
120.0
源代码位于: feishu/ws/model.py
Python
def client_config_from_dict(d: dict[str, Any]) -> ClientConfig:
    r"""
    将握手响应中的 `ClientConfig`(PascalCase 键)映射为 [ClientConfig][feishu.ws.model.ClientConfig]。

    仅当对应键存在且值不为 `None` 时才覆盖默认值,因此服务端可只下发部分字段。

    Args:
        d: 握手响应 `data.ClientConfig` 字典,可能为空。

    Returns:
        映射后的客户端配置。

    Examples:
        >>> cfg = client_config_from_dict({"ReconnectCount": 5, "PingInterval": 60})
        >>> cfg.reconnect_count, cfg.ping_interval
        (5, 60.0)
        >>> client_config_from_dict({}).reconnect_count
        -1
        >>> client_config_from_dict({"ReconnectInterval": None}).reconnect_interval
        120.0
    """
    cfg = ClientConfig()
    if d.get("ReconnectCount") is not None:
        cfg.reconnect_count = int(d["ReconnectCount"])
    if d.get("ReconnectInterval") is not None:
        cfg.reconnect_interval = float(d["ReconnectInterval"])
    if d.get("ReconnectNonce") is not None:
        cfg.reconnect_nonce = float(d["ReconnectNonce"])
    if d.get("PingInterval") is not None:
        cfg.ping_interval = float(d["PingInterval"])
    return cfg