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

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.xdnf.cn/news/15408.html

相关文章:

  • 面试遇到的问题
  • 项目总体框架(servlet+axios+Mybatis)
  • Qt图形视图框架5-状态机框架
  • 【Python进阶】深度复制——deepcopy
  • 【人工智能】通过 Dify 构建智能助手
  • JavaScript书写基础和基本数据类型
  • 8:从USB摄像头把声音拿出来--ALSA大佬登场!
  • 算法训练营day18 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • 迁移学习:知识复用的智能迁移引擎 | 从理论到实践的跨域赋能范式
  • 【前端:Typst】--let关键字的用法
  • 排序树与无序树:数据结构中的有序性探秘
  • 自定义类型 - 联合体与枚举(百度笔试题算法优化)
  • 理解Linux文件系统:从物理存储到统一接口
  • vue3 JavaScript 数据累加 reduce
  • 七、深度学习——RNN
  • 编程语言设计目的与侧重点全解析(主流语言深度总结)
  • 游戏框架笔记
  • 【小白量化智能体】应用5:编写通达信股票交易指标及生成QMT自动交易Python策略程序
  • 控制台打开mysql服务报错解决办法
  • 【STM32】什么在使能寄存器或外设之前必须先打开时钟?
  • 2025js——面试题(8)-http
  • YOLOv11开发流程
  • 为什么资深C++开发者大部分选vector?揭秘背后的硬核性能真相!
  • 【第一章编辑器开发基础第二节编辑器布局_3GUI元素和布局大小(3/4)】
  • SpringMVC3
  • JavaScript进阶篇——第二章 高级特性核心
  • 【笔记】chrome 无法打开特定协议或访问特定协议时卡死
  • Flink窗口处理函数
  • 0-1搭建springboot+vue的教务管理系统(核心源码)
  • Spring Boot 自带的 JavaMail 集成