返回

Bun 中文文档:API — WebSockets

前端

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 的详细信息。