返回列表 发布新帖
查看: 66|回复: 0

什么是 WebSocket?

发表于 4 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在传统的网页中,浏览器与服务器之间的通信通常是通过 HTTP 协议完成的。HTTP 是一种“请求-响应”模式的协议:浏览器(客户端)发送请求,服务器返回数据。
这种方式虽然简单稳定,但有一个明显的缺点——通信是单向的。也就是说,只有客户端主动请求,服务器才能响应。
而在一些需要实时通信的场景中,例如:
  • 在线聊天
  • 股票行情实时更新
  • 在线游戏
  • 实时监控数据推送
传统 HTTP 就显得力不从心了。
这时,WebSocket 就登场了。
一、WebSocket 的概念
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。
简单来说,它让浏览器和服务器之间可以实时地互相发送数据,而不必每次都重新建立连接。
WebSocket 最早在 HTML5 中被引入,用来解决网页实时通信的问题。
它的连接是通过 HTTP 协议发起的“握手”请求建立的,但一旦连接成功,就不再受 HTTP 的限制。
二、WebSocket 的工作原理
  • 握手阶段
浏览器先通过一个特殊的 HTTP 请求(带有 Upgrade: websocket 头)向服务器发起连接请求。
如果服务器支持 WebSocket,就会返回一个确认响应(101 Switching Protocols),表示协议升级成功。
  • 建立连接
握手完成后,HTTP 协议升级为 WebSocket 协议。
此时,客户端与服务器之间形成一个持久连接,双方都可以随时主动发送数据。
  • 双向通信
客户端可以向服务器主动发送消息。
服务器也可以主动向客户端推送数据。
所有消息都通过这个持续存在的连接传输,无需频繁建立连接。
  • 关闭连接
当一方发送关闭信号时,连接被终止。
三、WebSocket 与 HTTP 的区别
对比项HTTPWebSocket
通信模式请求-响应(单向)全双工(双向)
连接状态每次请求都会建立新连接一次握手后保持长连接
传输效率低(频繁握手、开销大)高(实时通信)
适用场景普通网页请求实时交互、推送数据
协议端口80(HTTP)/ 443(HTTPS)80(ws)/ 443(wss)
四、WebSocket 的优点
实时性强:消息可以在毫秒级内传输。
节省带宽:只需一次握手,后续通信不再重复发送请求头。
双向通信:服务器可以主动通知客户端。
兼容性好:多数现代浏览器(Chrome、Firefox、Edge、Safari)都原生支持。
五、WebSocket 使用示例
前端 JavaScript 连接 WebSocket:
// 创建连接
const socket = new WebSocket("wss://example.com/chat");
// 连接成功
socket.onopen = () => {
  console.log("连接已建立");
  socket.send("Hello Server!");
};
// 接收消息
socket.onmessage = (event) => {
  console.log("收到服务器消息:", event.data);
};
// 关闭连接
socket.onclose = () => {
  console.log("连接已关闭");
};
服务器端可以用 Node.js、Python、Go、Java 等语言实现 WebSocket 服务。例如 Node.js 常见的 ws 库:
import { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws) => {
  console.log('客户端已连接');
  ws.send('欢迎加入!');
  ws.on('message', (message) => {
    console.log('收到消息:', message.toString());
  });
});
六、总结
WebSocket 的出现让 Web 实现了真正意义上的“实时通信”。
相比传统的 HTTP 轮询或长轮询方式,WebSocket 更高效、更稳定,也更适合需要快速数据交互的现代 Web 应用。
一句话总结:
WebSocket = 浏览器和服务器之间的“实时电话线”。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.102115 second(s), 7 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表