返回
Bun 中文文档:API — WebSockets
前端
2023-12-14 21:03:49
Bun WebSockets:构建实时交互式应用程序的指南
服务器端 WebSockets 介绍
WebSockets 是实时通信的基石,它允许客户端和服务器之间建立双向通信通道。Bun.serve() 框架提供内置支持,使您可以轻松地构建服务器端 WebSockets 应用程序。通过传递一个回调函数作为 websocket
选项,您可以创建 WebSocket 服务器,该服务器可以处理客户端连接并交换数据。
基本用法
以下是创建服务器端 WebSocket 的基本示例:
import { serve } from "bun";
serve({
websocket: (ws) => {
ws.onopen = () => {
console.log("WebSocket 连接已打开。");
};
ws.onmessage = (msg) => {
// 服务器将数据回显给客户端
ws.send(msg);
};
ws.onclose = () => {
console.log("WebSocket 连接已关闭。");
};
},
});
高级功能
除了基本功能外,Bun WebSockets API 还提供了以下高级功能:
- 发布-订阅 (Pub/Sub): 允许在客户端和服务器之间进行异步通信,使您可以构建复杂的多用户应用程序。
- 压缩: Bun 自动压缩 WebSocket 流量,以最大限度地减少带宽使用,提高应用程序性能。
- TLS: 支持使用 TLS 加密 WebSocket 流量,确保安全通信。
代码示例:回显服务器
import { serve } from "bun";
serve({
websocket: (ws) => {
ws.onmessage = (msg) => {
ws.send(msg);
};
},
});
客户端连接
客户端可以使用 WebSockets API 连接到服务器:
const ws = new WebSocket("ws://localhost:3000");
ws.onopen = () => {
console.log("WebSocket 连接已打开。");
};
ws.onmessage = (msg) => {
console.log("收到服务器消息:", msg.data);
};
ws.onclose = () => {
console.log("WebSocket 连接已关闭。");
};
ws.send("Hello, Bun!");
常见的用例
WebSockets 在各种实时应用程序中发挥着至关重要的作用,包括:
- 聊天室: 实时消息传递和在线协作。
- 多人游戏: 实时游戏体验和互动。
- 实时数据流: 从服务器向客户端推送实时更新。
结论
Bun WebSockets API 提供了构建强大且响应迅速的实时应用程序的强大工具。通过提供高级功能,例如压缩、TLS 和发布-订阅,Bun 使开发人员能够创建高效且安全的解决方案。从聊天室到数据流,WebSockets 的用途广泛,为应用程序添加了交互式和动态的维度。
常见问题解答
- 如何确保 WebSocket 流量的安全性?
- 使用 TLS 加密 WebSocket 流量。
- 如何提高 WebSocket 应用程序的性能?
- 启用压缩以减少带宽使用。
- 如何处理 WebSocket 连接关闭?
- 实现
onclose
事件处理程序来处理连接关闭。
- 实现
- Pub/Sub 在 WebSocket 中有什么作用?
- Pub/Sub 允许客户端和服务器之间进行异步通信,从而实现复杂的消息传递场景。
- 如何使用 Bun 中的发布-订阅?
- 请参阅 Bun 文档了解有关发布-订阅 API 的详细信息。