Skip to main content
Bun 的 TCP API 是底层 API,面向库作者和高级用例。

启动服务器 (Bun.listen())

使用 Bun.listen 启动 TCP 服务器:
server.ts
在 Bun 中,你为每个服务器声明一组处理器,而不是像 Node.js EventEmitters 或 Web 标准的 WebSocket API 那样为每个套接字分配回调。
server.ts
对于性能敏感的服务器,为每个套接字分配监听器可能会导致严重的垃圾回收压力并增加内存使用。相比之下,Bun 只为每个事件分配一个处理器函数,并在所有套接字之间共享。这是一个小的优化,但效果累积起来。
在 open 处理器中向套接字附加上下文数据。
server.ts
要启用 TLS,传递包含 key 和 cert 字段的 tls 对象。
server.ts
key 和 cert 字段期望的是 TLS 密钥和证书的内容。可以是字符串、BunFile、TypedArray 或 Buffer。
server.ts
Bun.listen 返回一个符合 TCPSocketListener 接口的服务器。
server.ts

创建连接 (Bun.connect())

使用 Bun.connect 连接到 TCP 服务器。使用 hostname 和 port 指定服务器。TCP 客户端可以定义与 Bun.listen 相同的一组处理器,外加一些客户端特定的处理器。
server.ts
如果需要 TLS,指定 tls: true。

热重载

TCP 服务器和套接字都可以使用新处理器进行热重载。

缓冲

Bun 中的 TCP 套接字不会缓冲数据,因此性能敏感的代码应自行缓冲写入。例如,这段代码:
…性能远不如这段代码:
要缓冲写入,请使用 Bun 的 ArrayBufferSink 并设置 {stream: true} 选项:
server.ts
Corking计划支持 corking,但在此期间,必须使用 drain 处理器手动管理背压。