Skip to content

Kun-GitHub/webrtc-file-transfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

##后端

##前端

在WebRTC架构下,服务器和客户端(我们这里称为A和B)各自扮演不同的角色。下面我将按照之前提到的步骤,详细说明每一环节中服务器与客户端(A和B)的具体任务:

  1. 初始化:

    • 客户端A和B:请求用户授权以访问音频和视频设备。
  2. 创建RTCPeerConnection实例:

    • 客户端A和B:各自创建RTCPeerConnection实例来管理音视频的实时传输。
  3. 建立信令连接:

    • 服务器:提供信令服务,用于在客户端A和B之间传递会话描述(SDP)和ICE候选信息。这通常是一个独立于WebRTC之外的组件,用于在客户端间传递控制信息。
    • 客户端A和B:通过信令通道交换会话描述和ICE候选信息。
  4. 创建并发送Offer SDP:

    • 客户端A:创建包含本地音视频能力的SDP offer并通过信令发送给客户端B。
    • 服务器:转发客户端A的SDP offer到客户端B。
  5. 接收Offer SDP并创建Answer SDP:

    • 客户端B:解析收到的SDP offer,创建并发送SDP answer通过信令回传给客户端A。
    • 服务器:转发客户端B的SDP answer到客户端A。
  6. 设置远程描述:

    • 客户端A和B:各自调用setRemoteDescription()方法设置对方的SDP描述信息。
  7. ICE候选收集与交换:

    • 客户端A和B:各自收集ICE候选,并通过信令通道发送给对方。
    • 服务器:负责转发ICE候选信息。
  8. ICE候选接收与添加:

    • 客户端A和B:接收对方的ICE候选,并添加到各自的RTCPeerConnection中。
  9. 连接建立:

    • 客户端A和B:使用ICE协议自动选择最佳连接路径,可能涉及STUN和TURN服务器(通常是第三方提供的服务)。
  10. 媒体流传输:

    • 客户端A和B:一旦ICE完成媒体流的协商和建立,直接在客户端间传输音频和视频数据。
  11. 会话维护和关闭:

    • 客户端A和B:在会话期间处理网络变化,如果任何一方决定终止会话,则调用close()方法来关闭RTCPeerConnection
    • 服务器:不参与会话的维护或关闭过程,除非信令服务需要保持活动状态以应对重连或异常情况。

总结来说,服务器主要负责信令通道的建立和维护,即转发SDP描述和ICE候选信息。而客户端A和B则负责创建连接、协商媒体描述、建立媒体流传输,并且直接在它们之间进行媒体数据的交换。STUN和TURN服务器作为辅助组件,帮助解决NAT穿越问题,但它们并不存储媒体数据,仅提供网络穿透服务。

About

WebRTC 文件传输

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published