Skip to content

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

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。
  • 通过托盘状态及时显示进度或失败原因。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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