WebSocket 专题
约 714 字大约 2 分钟
2025-03-15
什么是 WebSocket
WebSocket 是一种在单个 TCP 连接上全双工通信的协议,它能够实现客户端和服务器之间的实时通信,能够提供更快、更稳定的通信效果。
与传统的 HTTP 协议不同,WebSocket 在握手阶段使用 HTTP 协议进行协商,然后在建立连接后,双方可以通过发送特定的数据帧进行实时通信。这种方式避免了每次请求都要建立和关闭连接的开销,提高了通信的效率。
WebSocket 的实时通信原理如下:
- 客户端和服务器首先通过 HTTP 协议进行握手,建立 WebSocket 连接。
- 握手成功后,客户端和服务器可以通过发送数据帧进行实时通信。
- 客户端可以使用 JavaScript 提供的 WebSocket API 发送和接收消息,服务器也可以通过 WebSocket API 与客户端进行通信。
- 在连接保持的时间内,客户端和服务器可以随时发送或接收消息,实现实时的双向通信。
- 当通信结束时,可以通过关闭连接来终止 WebSocket 通信。
WebSocket 在实时通信方面具有较低的延迟以及更好的性能表现,因此广泛应用于实时消息推送、聊天应用、在线游戏等场景。
如何使用 WebSocket 进行双向通信?
创建 WebSocket 连接对象:
在客户端使用 JavaScript 创建 WebSocket 对象,并指定服务器的 WebSocket 地址。
const socket = new WebSocket("ws://localhost:8080");
监听 WebSocket 对象的事件:
- 打开连接事件:当 WebSocket 连接成功建立时触发。
socket.onopen = function (event) { console.log("WebSocket连接已打开"); };
- 接收消息事件:当客户端接收到服务器发送的消息时触发。
socket.onmessage = function (event) { const message = event.data; console.log("接收到消息:" + message); };
- 发送消息事件:当客户端发送消息时触发。
socket.onopen = function (event) { const message = "Hello, server!"; socket.send(message); console.log("发送消息:" + message); };
- 关闭连接事件:当 WebSocket 连接关闭时触发。
socket.onclose = function (event) { console.log("WebSocket连接已关闭"); };
服务器端需要处理与客户端的 WebSocket 连接,接收和发送消息。
- 在 Node.js 中,你可以使用
ws
模块创建 WebSocket 服务器。
const WebSocket = require("ws"); const wss = new WebSocket.Server({ port: 8080 }); wss.on("connection", function (ws) { console.log("已建立WebSocket连接"); ws.on("message", function (message) { console.log("接收到消息:" + message); // 处理接收到的消息 }); ws.send("Hello, client!"); });
- 在其他服务器端语言中,你可以查找相应的 WebSocket 库。
- 在 Node.js 中,你可以使用
通过以上步骤,你可以实现双向通信,服务器与客户端可以互相发送消息并进行实时通信。记得在开发时处理错误和关闭连接的情况,以确保通信的稳定性和可靠性。
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于