通讯技术

发布时间 2023-11-07 13:29:01作者: 屿蓝深海

# 实时通讯技术

##  实时通讯技术是指通过网络实现实时数据传输和实时交流的技术。

## 通用的实时传输协议

### 在不同类型程序下的实时通讯技术

  1. Web应用程序:
    • WebSocket:用于在Web浏览器和服务器之间实现实时的双向通信。
    • SSE(Server-Sent Events):用于从服务器向客户端推送实时数据。
    • Long Polling:通过HTTP协议模拟实时通信,适用于需要实时更新的场景。
  2. 桌面应用程序:
    • WebSocket:用于在桌面应用程序和服务器之间实现实时的双向通信。
    • SignalR:适用于.NET桌面应用程序,可实现实时通信和推送功能。
  3. 移动应用程序:
    • WebSocket:用于在移动应用程序和服务器之间实现实时的双向通信。
    • Firebase Cloud Messaging(FCM):用于向移动设备推送实时通知和消息。
  4. 物联网应用程序:
    • MQTT(Message Queuing Telemetry Transport):一种轻量级的发布/订阅消息传输协议,适用于物联网设备之间的实时通信。
  5. 实时游戏应用程序:
    • WebSocket:用于在游戏客户端和服务器之间实现实时的双向通信。
    • UDP(User Datagram Protocol):用于实现低延迟的实时游戏通信。

### 实时通讯技术和http的区别

  1. 实时性:实时通讯技术主要关注实时数据传输和实时交流,旨在实现低延迟和即时性。它使用一些特定的协议和机制,如WebSocket、WebRTC等,可以实现实时的双向通信。而HTTP技术是一种无状态的请求-响应协议,通常是通过客户端发起请求,服务器返回响应的方式进行通信,不具备实时性。
  2. 数据传输方式:实时通讯技术通常使用较低层次的协议,如TCP或UDP,以实现实时数据的传输。它可以直接在数据包级别进行传输,以达到更高的效率和实时性。而HTTP技术使用的是基于TCP的协议,数据传输是通过HTTP请求和响应的方式进行,相对于实时通讯技术可能会有较高的延迟和开销。
  3. 通信模式:实时通讯技术支持双向通信,可以实现实时的双向数据传输和交流。它适用于实时聊天、视频通话、实时协作等场景。而HTTP技术通常是客户端向服务器发起请求,服务器返回响应的单向通信模式,不支持实时的双向通信。

   综上所述,实时通讯技术和HTTP技术在实时性、数据传输方式和通信模式等方面存在一些区别。选择使用哪种技术取决于具体的应用需求和场景。如果需要实时的双向通信和低延迟,可以选择实时通讯技术;如果只需要进行简单的请求-响应通信,HTTP技术可能更适合。

 

## 基于视频流的实时通讯技术

### 在不同类型程序下基于视频流的实时通讯技术

  1. Web应用程序:
    • WebRTC(Web Real-Time Communication):WebRTC是一种在Web浏览器中实现点对点的音视频传输的技术。它提供了丰富的API和功能,可以实现实时的视频通话和会议等应用。
  2. 移动应用程序:
    • WebRTC:WebRTC也适用于移动应用程序,可以在移动设备上实现实时的视频通话和会议等功能。
    • RTMP(Real-Time Messaging Protocol):RTMP可以用于移动应用程序中的视频直播和实时通话等场景。
  3. 桌面应用程序:
    • WebRTC:WebRTC可以在桌面应用程序中实现实时的视频通话和会议等功能。
    • RTMP:RTMP也适用于桌面应用程序中的视频直播和实时通话等场景。
  4. 物联网设备:
    • WebRTC:WebRTC可以用于物联网设备之间的实时视频通信,如智能家居中的视频监控系统。
    • RTSP(Real-Time Streaming Protocol):RTSP是一种用于流媒体传输的协议,可以在物联网设备中实现实时视频流的传输和播放。

### 点对点式和广播式推流技术

  点对点式的推流技术:
  1. WebRTC(Web Real-Time Communication):使用UDP协议进行点对点的实时音视频传输,适用于实时通信场景,如视频会议、实时聊天等。
  广播式的实时推流技术:
  1. RTMP(Real-Time Messaging Protocol):使用TCP协议进行音视频传输,常用于将实时视频内容推送到服务器,然后由服务器进行广播式的分发。
  2. HLS(HTTP Live Streaming):基于HTTP的流媒体传输协议,将音视频数据切片成小的TS(Transport Stream)文件,并通过HTTP协议进行传输,适用于将实时视频内容广播给大量观众。
  3. DASH(Dynamic Adaptive Streaming over HTTP):基于HTTP的动态自适应流媒体传输协议,根据观众的网络状况自动调整视频的质量,适用于广播式的实时推流。
  • 点对点式的推流技术适用于点对点的实时视频通信,传输路径直接,可以实现较低的延迟。
  • 广播式的实时推流技术适用于将实时视频内容广播给大量观众,传输路径经过服务器,可以实现大规模的观众访问和稳定的传输。

### 点对点式和广播式推流技术的兼容性

  1. WebRTC:WebRTC在现代浏览器中得到广泛支持,包括Google Chrome、Mozilla Firefox、Microsoft Edge等主流浏览器。然而,对于一些旧版本的浏览器,特别是移动设备上的浏览器,可能存在兼容性问题。在这种情况下,可能需要使用媒体服务器或媒体网关来进行兼容性处理。
  2. RTMP:RTMP协议在许多平台和设备上得到广泛支持,包括桌面应用程序、移动应用程序和流媒体服务器。然而,由于一些浏览器和移动设备的限制,RTMP在Web浏览器中的兼容性可能有所限制。在这种情况下,可以考虑使用其他协议或技术,如HLS或WebRTC。
  3. HLS:HLS协议具有较好的兼容性,可以在各种设备和平台上进行播放,包括Web浏览器、移动设备和智能电视等。大多数现代浏览器和操作系统都支持HLS协议。然而,一些旧版本的浏览器可能不支持HLS,或者需要使用额外的插件或处理来实现兼容性。
  4. DASH:DASH协议也具有较好的兼容性,可以在各种设备和平台上进行播放。大多数现代浏览器和操作系统都支持DASH协议。然而,一些旧版本的浏览器可能不支持DASH,或者需要使用额外的插件或处理来实现兼容性。
 ## 发布订阅传输协议
### 常用的发布订阅协议
  1. MQTT(Message Queuing Telemetry Transport):一种轻量级的发布/订阅消息传输协议,适用于物联网设备之间的实时通信。它具有低带宽和低功耗的特点,适用于资源受限的设备。
  2. AMQP(Advanced Message Queuing Protocol):一种高级消息队列协议,支持可靠的消息传输和灵活的消息路由。它提供了丰富的功能,如消息持久化、消息优先级、事务性消息等,适用于复杂的消息传递场景。
  3. STOMP(Simple Text Oriented Messaging Protocol):一种简单的文本导向消息传输协议,基于ASCII文本,易于实现和使用。它可以与多种消息中间件和消息代理进行通信,适用于跨平台和跨语言的消息传递。
  4. Redis Pub/Sub:Redis是一个高性能的键值存储系统,它也提供了发布订阅功能。通过Redis的Pub/Sub功能,可以实现基于主题的消息发布和订阅。

### 底层协议基于什么协议实现

  1. MQTT(Message Queuing Telemetry Transport):MQTT协议通常基于TCP/IP协议栈实现,使用TCP协议进行消息的可靠传输。
  2. AMQP(Advanced Message Queuing Protocol):AMQP协议可以基于TCP/IP协议栈实现,使用TCP协议进行消息的可靠传输。同时,AMQP也支持在底层使用其他传输协议,如WebSocket等。
  3. STOMP(Simple Text Oriented Messaging Protocol):STOMP协议可以基于TCP/IP协议栈实现,使用TCP协议进行消息的传输。此外,STOMP也支持在底层使用WebSocket等传输协议。
  4. Redis Pub/Sub:Redis的发布订阅功能是基于Redis数据库的内置功能实现的,使用Redis自身的通信协议进行消息的发布和订阅。

## Reference

[1] 所有的回答皆来在chatGPT的回答,上面是进行整理后的结果