Skip to main content
Bun 的 TCP API 属于底层 API,面向库作者和高级使用场景。

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

使用 Bun.listen 启动 TCP 服务器:
server.ts
在 Bun 中,你可以为每个服务器声明一组处理函数,而不是像 Node.js 的 EventEmitter 或符合 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
缓冲合并计划支持缓冲合并功能。目前必须通过 drain 处理器手动管理背压。