通信方式了解

按照串行通信双方分工和信号传输方向,可以分为以下几种通信方式:

1. 单工通信(Simplex)

特点:单向传输,一方固定为发送端,另一方固定为接收端

数据流向:只能单向传输(A → B)

示例:广播、电视、遥控器(只能发送不能接收)、键盘到计算机

2. 半双工通信(Half-Duplex)

特点:双向传输,但同一时间只能单向传输

数据流向:可以双向传输,但不能同时(A ↔ B,分时进行)

工作机制:需要方向切换,有切换延迟

示例:对讲机、USB 1.0/2.0、某些RS-485通信

3. 全双工通信(Full-Duplex)

特点:双向同时传输

数据流向:可以同时双向传输(A ↔ B)

工作机制:通常需要两条独立的信道或频分复用

示例:电话、网线(以太网)、RS-232、USB 3.0+

详细对比表格

特性 单工 半双工 全双工
数据传输方向 单向 双向,分时 双向,同时
信道数量 1条 1条 2条(1条双向复用)
同时性 不能同时收发 不能同时收发 可以同时收发
效率 中等
典型应用 广播、键盘 对讲机、RS-485 电话、以太网、RS-232

WebSocket全双工通信机制

实现了双方无缝的数据交换,不收请求响应模型的束缚。

特点:

  • 握手升级
  • 持续链接,握手成功就维持一个长期的TCP连接,避免了反复建立连接的开销
  • 全双工通信
  • 心跳机制。内置心跳机制,是web应用当中实时交互的关键技术。

支持的数据传输:

  • 文本数据
  • 二进制数据:arrayBuffer, arrayBufferView, blob

如何实现心跳机制:

  • 定时发送心跳包
  • 接收方响应确认
  • 超时处理,维护超时定时器,
  • 活动跟踪
  • 灵活配置

如何保障实时通信的稳定性:

  • 监听onclose事件,
  • 状态码判断,检查event code判断关闭原因
  • 心跳检测超时,主动监测连接状态
  • 重连,使用递归重试、定时器控制、失败次数的限制
  • 优化:延迟重连、错误处理、用户反馈

WebSocket如何处理跨域问题:

关键在于服务端的响应头设计,

  • 设置access-control-allow-origin,在http响应头的该字段设置响应源
  • CORS头部细化
  • WebSocket handshake 在握手阶段处理跨域
  • 跨域配置在服务端设置
相关推荐
agent8972 天前
实战升级|SpringBoot WebSocket实现多轮对话AI流式问答(上下文记忆+自动重连+会话隔离)
人工智能·spring boot·websocket
sunywz4 天前
【从零搭建物联网智能充电桩系统】4、Netty WebSocket 服务:小程序实时推送背后的长连接管理
物联网·websocket·小程序
贾天佑忆月 迷失的昵6 天前
客户端与服务器持续同步解析(轮询,comet,WebSocket)
运维·服务器·websocket
李昊哲小课7 天前
fastapi sse websocket 奶茶店实时订单看板
人工智能·python·websocket·网络协议·fastapi·sse
李昊哲小课7 天前
fastapi sse websocket 智能家居实时控制台
python·websocket·智能家居·fastapi·sse
花生了什么事o7 天前
WebSocket 与 SSE:实时通信方案的选择
网络·websocket·网络协议
paopaokaka_luck7 天前
基于springboot3+vue3的乡村医生诊疗管理系统(AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析)
前端·网络·人工智能·spring boot·websocket·网络协议·echarts
为啥全要学7 天前
fastapi websocket全双工通信
websocket·网络协议·fastapi
fpcc8 天前
c++应用网络编程之十七WebSocket
网络·c++·websocket
半夢半醒110 天前
一种FreeSWITCH流量镜像WebSocket音频推流方案
websocket·网络协议·音视频