websocket

WebSocket 是一种在客户端(浏览器)和服务器之间建立 双向通信通道 的网络协议。


🧠 一句话理解:

WebSocket 就像一个"持续不断的电话通话",而不是传统 HTTP 的"一问一答"。


🔍 为什么需要 WebSocket?

传统 HTTP 协议是 单向通信

  • 浏览器请求 -> 服务器响应

  • 如果你想"实时获取数据",只能不断地用 Ajax 或轮询去问服务器(效率低)

WebSocket 是 双向的、长连接 ,一旦连接建立,服务器可以随时主动推送消息 给客户端(比如聊天消息、实时通知等)。


🧪 WebSocket 特点:

特性 说明
📡 长连接 建立连接后保持不断开,除非主动关闭
🔁 双向通信 客户端和服务端都可以主动发送消息
🕐 实时性高 消息可以即时推送,毫秒级延迟
📦 数据格式轻量 通常发送的是字符串或二进制(比 HTTP Header 少)

🧱 应用场景举例:

场景 是否适合用 WebSocket
💬 聊天室 / IM ✅ 非常适合,实时消息
📈 股票价格 / 币价推送 ✅ 实时更新数据
🎮 多人游戏同步状态 ✅ 同步性强
🧠 AI 响应流式输出 ✅ 比如 ChatGPT 的逐字输出
✅ 实时通知系统 ✅ 新订单、新消息提醒等

🧑‍💻 示例代码(前端使用 WebSocket)

复制代码
const socket = new WebSocket('wss://example.com/socket');

// 连接成功
socket.onopen = () => {
  console.log('连接已建立');
  socket.send('你好服务器'); // 可以主动发送消息
};

// 收到消息
socket.onmessage = (event) => {
  console.log('收到消息:', event.data);
};

// 连接关闭
socket.onclose = () => {
  console.log('连接已关闭');
};

// 发生错误
socket.onerror = (err) => {
  console.error('发生错误:', err);
};

✅ 和 Ajax / SSE(Server-Sent Events)的区别?

特性 Ajax SSE WebSocket
通信方向 单向 单向(服务端 -> 客户端) 双向
是否持久连接
实时性 差(轮询) 极好
服务器主动推送能力
是否支持二进制 ❌(文本)

如果你在开发中涉及 聊天功能、实时消息、流式输出 等,就可以考虑使用 WebSocket。

相关推荐
Ivanqhz12 分钟前
数据搬运是性能关键
java·服务器·网络·人工智能·深度学习
Julien200435 分钟前
自动挂载网络附加存储
linux·服务器·网络
K成长日志42 分钟前
BLE链路层-隐私保护
网络·物联网·蓝牙·iot·ble
K成长日志1 小时前
BLE链路层-Feature Support
网络·嵌入式·无线通信·蓝牙·iot·ble
Ivanqhz1 小时前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
王六米。2 小时前
RAG知识库建设 文档解析 切分与索引如何衔接
服务器·前端·网络·企业数字化转型·智钳智能盒子
wuyk5553 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
dog2505 小时前
写一个时延固定的拥塞控制
网络
酣大智5 小时前
华为 VRRP的抢占延迟时间
网络·tcp/ip·vrrp
hengmeida6 小时前
楼宇控制柜标准化项目交付完整规范
大数据·网络·笔记