当前位置: 首页 > news >正文

17. 什么是 webSocket ?

总结

  1. WebSocket 是 HTML5 引入的一种新协议,允许客户端和服务器之间进行双向实时通信
  2. 建立在 TCP 协议之上,默认端口是 80(ws) 和 443(wss),没有同源限制,客户端可以与任意服务器通信。
    • ws://example.com/socket 表示非加密连接。
    • wss://example.com/socket 表示加密连接(类似 HTTPS)。

特点

  • 双向通信:不同于传统的 HTTP 请求-响应模式,WebSocket 允许服务器主动推送消息到客户端。
  • 低延迟:一旦建立连接,数据可以直接传输,无需每次发送 HTTP 头部信息。
  • 无同源限制:客户端可以与任意服务器通信,不受浏览器同源策略限制。
  • 持久化连接:WebSocket 连接在整个会话期间保持打开状态。

使用场景

  • 实时聊天应用(如微信、QQ)
  • 在线协作工具(如 Google Docs)
  • 实时数据更新(如股票行情、天气预报)
  • 游戏开发(多人在线游戏)

示例代码

客户端(JavaScript)

const socket = new WebSocket("ws://example.com/socket");// 监听连接打开事件
socket.addEventListener("open", function (event) {socket.send("Hello Server!");
});// 监听服务器返回的消息
socket.addEventListener("message", function (event) {console.log("Message from server:", event.data);
});

服务器端(Node.js + ws 库)

const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 8080 });wss.on("connection", function connection(ws) {ws.on("message", function incoming(message) {console.log("received: %s", message);ws.send(`Echo: ${message}`);});
});

优势

  • 减少不必要的 HTTP 请求,提高性能。
  • 支持二进制和文本数据传输。
  • 更简单的 API 接口,易于使用。

注意事项

  • WebSocket 需要服务器端支持,不能直接使用普通 HTTP 服务器。
  • 部分老旧浏览器可能不支持 WebSocket,需要降级处理或使用替代方案(如长轮询)。

参考资料

  • MDN WebSocket 文档
  • WebSocket 协议 RFC 6455

http://www.dtcms.com/a/280413.html

相关文章:

  • 力扣 hot100 Day45
  • ZYNQ千兆光通信实战:Tri Mode Ethernet MAC深度解析
  • Keepalived双机热备概述
  • 基于深度学习的LSTM、GRU对大数据交通流量分析与预测的研究
  • omniparser v2 本地部署及制作docker镜像(20250715)
  • 从浏览器到服务器:TCP 段的网络传输之旅
  • 设计模式二:策略模式 (Strategy Pattern)
  • 云计算如何提高企业的数据安全性和隐私保护
  • 我会秘书长杨添天带队赴杭州融量农业发展有限公司考察调研
  • NQTT-基础知识
  • CSS :root伪类详解:实现动态主题切换的关键所在
  • 7.15 Java基础|大小写转换、数组、ArrayList类
  • 基于Langchain4j开发AI编程助手
  • Python_1
  • 高等数学强化——导学
  • 【Python练习】044. 编写一个函数,实现快速排序算法
  • 第十三讲 | map和set的使用
  • JavaDemo——使用CGLIB动态代理
  • I3C通信驱动开发注意事项
  • 【雅思播客016】New Year Resolution 新年决心
  • docker搭建freeswitch实现点对点视频,多人视频
  • 极致cms多语言建站|设置主站默认语言与设置后台固定语言为中文
  • 嵌入式学习-PyTorch(4)-day21
  • 多相机depth-rgb图组完整性分拣器_MATLAB实现
  • @[TOC](模拟) # 1.替换所有的问号(easy)
  • 学C++做游戏,先搞懂这些基础要点
  • 《大数据技术原理与应用》实验报告六 Flink编程实践
  • 使用JS编写用户信息采集表单
  • 【Python3-Django】快速掌握DRF:ModelViewSet实战指南
  • OneCode 3.0 从0到1干货——AIGC及MCP注解驱动开发物联网AI决策应用