Skip to content

perf(windows-tray): RTSP 连接和握手可能导致每个接收端阻塞 5 秒以上 #21

@ByteColtX

Description

@ByteColtX

概要

Windows 托盘开始串流慢的另一个原因是 RTSP 连接和握手是同步执行的,并且使用较长阻塞超时。

当前行为

connect_receivers() 会按顺序遍历 receiver,并对每个 receiver 执行 PreparedSession::prepare(...).handshake()

RTSP I/O 超时为 5 秒。当前 TcpStream::connect() 没有显式使用 connect_timeout,当缓存 IP 失效、设备不可达或连接半开时,连接阶段可能阻塞较久。

与同步 mDNS 发现叠加后,整体启动耗时很容易接近观察到的 10 秒量级。

相关代码

  • src/session/connect.rs: connect_receivers
  • src/rtsp/client.rs: RTSP_IO_TIMEOUT
  • src/rtsp/client.rs: RtspClient::connect
  • src/session/raop.rs: RaopSession::handshake_with_progress

期望行为

过期或不可达的 receiver 应快速失败,不应让托盘表现得像卡死。

建议修复

  • 使用 TcpStream::connect_timeout,为连接阶段设置较短超时。
  • 区分连接、写请求、读响应的超时配置。
  • 多个播放目标被选中时,并行连接多个 receiver。
  • 通过托盘状态及时显示进度或失败原因。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions