WebRTC 中 Websocket 的使用

WebSocket 是一种全双工通信协议,常用于在线聊天、实时协作等场景,以克服 HTTP 半双工的限制。它与 HTTP 具有良好的兼容性,握手阶段采用 HTTP 协议。在 WebRTC 中,WebSocket 作为信令服务器,负责传输 SDP 信息和 ICE 网络信息,实现两端媒体数据的交换。通过心跳检测如 ping/pong 保持长连接的稳定性。
摘要由CSDN通过智能技术生成

1. WebSocket 概念
WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。意为:经过一次 TCP 握手就可以直接创建持久性连接,进而可实现服务端和客户端双向数据传输。Websocket 的协议标识是 ws 和 wss。
Websocket 的应用场景:

  • 在线聊天
  • 协作文档编辑
  • 大型多人在线游戏
  • 股票交易应用
  • WebRTC


2. 为什么需要 WebSocket 协议

2.1 WebSocket 的出现主要是为了弥补 HTTP 半双工通信的缺陷。

在 Websocket 没有出现之前,为了让 HTTP 能够实现即时通信,前辈们也做了一些研究,常用的有三种方法:

1. HTTP 轮询

HTTP 轮询(polling):在固定的时间间隔,由浏览器向服务器发起 HTTP 请求,无论服务器中的数据有没有更新,都会给客户端作出响应。

但如果知道信息交付的精确间隔,那么轮询也是一个好的方案,但对于一些实时的数据是不能预测的,所有就会导致发出一些不必要的请求。

2. 长轮询

长轮询(long polling):客户端向服务端请求信息,并在设定的时间段内打开一个连接。服务器如果没有任何信息,会保持请求打开,直到有客户端可用的信息,或者直到指定的超时时间用完为止。

长轮询中客户端必须频繁地重连到服务器以读取服务端的信息,会增大服务端到压力。

3. 流化技术

客户端向服务端发起一个长连接请求,服务端收到请求后响应它并不断更新连接状态,以确保连接在客户端与服务端之间一直有效。服务端可以通过这个连接将数据主动推送到客户端。

但存在一个问题:每当服务器有需要交付给客户端的信息时,它就会更新响应,但是服务器从不发出完成 HTTP 响应,从而导致连接一直打开,在这种情况下,代理和防火墙可能会缓存一个响应,就会导致信息交付的延迟增加。

以上三种方法都实现了近乎实时的通信,但都涉及 HTTP 请求和响应,当然也包含了许多附加和不必要的延迟,此外,在每一种情况下,客户端必须主动给服务器发送消息,且客户端都必须等待请求返回,才能发出后续的请求,再一次增加了延迟。

2.2 Websocket 与 HTTP 有着良好的兼容性

默认端口是 80 和 443, 并且握手阶段采用 HTTP 协议,因此握手的时候不容易屏蔽,能通过各种的 HTTP 代理。

3. WebSocket 通信原理

以七牛 WebRTC Demo 为例:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTCWebSocket都是用于实现实时通信的协议,但它们有一些区别。 WebSocket是一种全双工通信协议,它在客户端和服务器之间建立一个持久的连接,可以双向传输数据。WebSocket可以在Web浏览器和服务器之间进行实时通信,而不需要通过轮询或其他机制来实现。由于WebSocket是基于TCP的,它可以提供比传统HTTP请求更高的性能和效率。 WebRTC是一套实时通信协议和API集合,用于在Web浏览器之间进行音频、视频和数据的传输。与WebSocket不同,WebRTC不仅可以实现实时的文本和二进制数据的传输,还可以进行实时的音频和视频传输。WebRTC使用Peer-to-Peer(P2P)技术,可以直接在浏览器之间建立点对点连接,而不需要通过服务器进行转。 总结来说,WebSocket是一种用于双向实时通信的协议,适用于各种Web应用程序。而WebRTC是一套用于实现实时音视频和数据通信的协议和API集合,适用于需要进行实时音视频通信的应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [web前端学习(六):WebRTC实时通信,掌握WebSocket很实用](https://blog.csdn.net/qq_50792097/article/details/126552203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值